199bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev/*
299bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev * Copyright (C) 2010 The Android Open Source Project
399bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev *
499bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev * Licensed under the Apache License, Version 2.0 (the "License");
599bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev * you may not use this file except in compliance with the License.
699bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev * You may obtain a copy of the License at
799bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev *
899bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev *      http://www.apache.org/licenses/LICENSE-2.0
999bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev *
1099bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev * Unless required by applicable law or agreed to in writing, software
1199bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev * distributed under the License is distributed on an "AS IS" BASIS,
1299bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1399bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev * See the License for the specific language governing permissions and
1499bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev * limitations under the License.
1599bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev */
1699bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev
1799bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrevpackage com.android.hierarchyviewerlib.actions;
1899bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev
1999bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrevimport com.android.hierarchyviewerlib.models.TreeViewModel;
20901803a3b2aaeafb4074974ec5bf9b08cc39d1c8Konstantin Lopyrevimport com.android.hierarchyviewerlib.models.TreeViewModel.ITreeChangeListener;
2199bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev
2299bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrevimport org.eclipse.jface.action.Action;
2399bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrevimport org.eclipse.swt.widgets.Display;
2499bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev
25901803a3b2aaeafb4074974ec5bf9b08cc39d1c8Konstantin Lopyrevpublic class SelectedNodeEnabledAction extends Action implements ITreeChangeListener {
2699bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev    public SelectedNodeEnabledAction(String name) {
2799bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev        super(name);
2899bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev        setEnabled(TreeViewModel.getModel().getTree() != null
2999bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev                && TreeViewModel.getModel().getSelection() != null);
3099bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev        TreeViewModel.getModel().addTreeChangeListener(this);
3199bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev    }
3299bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev
33f526dc3bb658b07c5a96d0372b17ffa2fbbe6079Xavier Ducrohet    @Override
3499bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev    public void selectionChanged() {
3599bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev        Display.getDefault().syncExec(new Runnable() {
36f526dc3bb658b07c5a96d0372b17ffa2fbbe6079Xavier Ducrohet            @Override
3799bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev            public void run() {
3899bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev                setEnabled(TreeViewModel.getModel().getTree() != null
3999bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev                        && TreeViewModel.getModel().getSelection() != null);
4099bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev            }
4199bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev        });
4299bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev    }
4399bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev
44f526dc3bb658b07c5a96d0372b17ffa2fbbe6079Xavier Ducrohet    @Override
4599bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev    public void treeChanged() {
4699bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev        Display.getDefault().syncExec(new Runnable() {
47f526dc3bb658b07c5a96d0372b17ffa2fbbe6079Xavier Ducrohet            @Override
4899bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev            public void run() {
4999bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev                setEnabled(TreeViewModel.getModel().getTree() != null
5099bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev                        && TreeViewModel.getModel().getSelection() != null);
5199bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev            }
5299bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev        });
5399bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev    }
5499bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev
55f526dc3bb658b07c5a96d0372b17ffa2fbbe6079Xavier Ducrohet    @Override
5699bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev    public void viewportChanged() {
5799bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev    }
5899bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev
59f526dc3bb658b07c5a96d0372b17ffa2fbbe6079Xavier Ducrohet    @Override
6099bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev    public void zoomChanged() {
6199bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev    }
6299bd6912e7b5b97fc6d4bb787e76b2d9dfffd7aeKonstantin Lopyrev}
63