/******************************************************************************* * Copyright (c) 2013 Bundlemaker project team. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Bundlemaker project team - initial API and implementation ******************************************************************************/ package org.bundlemaker.core.ui.editor.xref3; import static org.bundlemaker.core.ui.view.dependencytree.UIDependencyTreeImages.AUTO_EXPAND_FROM_GROUPS; import static org.bundlemaker.core.ui.view.dependencytree.UIDependencyTreeImages.AUTO_EXPAND_FROM_MODULES; import static org.bundlemaker.core.ui.view.dependencytree.UIDependencyTreeImages.AUTO_EXPAND_FROM_PACKAGES; import static org.bundlemaker.core.ui.view.dependencytree.UIDependencyTreeImages.AUTO_EXPAND_FROM_RESOURCES; import static org.bundlemaker.core.ui.view.dependencytree.UIDependencyTreeImages.AUTO_EXPAND_TO_GROUPS; import static org.bundlemaker.core.ui.view.dependencytree.UIDependencyTreeImages.AUTO_EXPAND_TO_MODULES; import static org.bundlemaker.core.ui.view.dependencytree.UIDependencyTreeImages.AUTO_EXPAND_TO_PACKAGES; import static org.bundlemaker.core.ui.view.dependencytree.UIDependencyTreeImages.AUTO_EXPAND_TO_RESOURCES; import org.bundlemaker.core.analysis.IBundleMakerArtifact; import org.bundlemaker.core.analysis.IGroupArtifact; import org.bundlemaker.core.analysis.IModuleArtifact; import org.bundlemaker.core.analysis.IPackageArtifact; import org.bundlemaker.core.analysis.IResourceArtifact; import org.bundlemaker.core.ui.view.dependencytree.DefaultExpandStrategy; import org.bundlemaker.core.ui.view.dependencytree.UIDependencyTreeImages; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.ToolBarManager; /** * @author Nils Hartmann (nils@nilshartmann.net) * */ public class ExpandStrategyActionGroup { private final DefaultExpandStrategy _expandStrategy; private final boolean _to; private ExpandStrategyAction _groupsAction; private ExpandStrategyAction _modulesAction; private ExpandStrategyAction _packagesAction; private ExpandStrategyAction _resourcesAction; public ExpandStrategyActionGroup(DefaultExpandStrategy expandStrategy, boolean to) { _expandStrategy = expandStrategy; _to = to; _groupsAction = new ExpandStrategyAction("Expand to Groups", (to ? AUTO_EXPAND_TO_GROUPS : AUTO_EXPAND_FROM_GROUPS), IGroupArtifact.class); _modulesAction = new ExpandStrategyAction("Expand to Modules", (to ? AUTO_EXPAND_TO_MODULES : AUTO_EXPAND_FROM_MODULES), IModuleArtifact.class); _packagesAction = new ExpandStrategyAction("Expand to Packages", (to ? AUTO_EXPAND_TO_PACKAGES : AUTO_EXPAND_FROM_PACKAGES), IPackageArtifact.class); _resourcesAction = new ExpandStrategyAction("Expand to Resources", (to ? AUTO_EXPAND_TO_RESOURCES : AUTO_EXPAND_FROM_RESOURCES), IResourceArtifact.class); updateActions(); } public void fill(ToolBarManager mgr) { mgr.add(_groupsAction); mgr.add(_modulesAction); mgr.add(_packagesAction); mgr.add(_resourcesAction); } protected void setExpandLevel(Class<? extends IBundleMakerArtifact> expandLevel) { if (_to) { _expandStrategy.setToTreeViewerAutoExpandType(expandLevel); } else { _expandStrategy.setFromTreeViewerAutoExpandType(expandLevel); } updateActions(); } protected void updateActions() { Class<? extends IBundleMakerArtifact> expandLevel; if (_to) { expandLevel = _expandStrategy.getToViewerExpandToType(); } else { expandLevel = _expandStrategy.getFromViewerExpandToType(); } _groupsAction.update(expandLevel); _modulesAction.update(expandLevel); _packagesAction.update(expandLevel); _resourcesAction.update(expandLevel); } class ExpandStrategyAction extends Action { private final Class<? extends IBundleMakerArtifact> _expandLevel; ExpandStrategyAction(String label, UIDependencyTreeImages image, Class<? extends IBundleMakerArtifact> expandLevel) { super(label, IAction.AS_CHECK_BOX); _expandLevel = expandLevel; setImageDescriptor(image.getImageDescriptor()); } /* * (non-Javadoc) * * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { boolean checked = isChecked(); setExpandLevel((checked ? _expandLevel : null)); } protected void update(Class<? extends IBundleMakerArtifact> currentExpandLevel) { setChecked(_expandLevel.equals(currentExpandLevel)); } } }