diff --git a/cave/com.raytheon.uf.viz.d2d.ui/src/com/raytheon/uf/viz/d2d/ui/perspectives/D2DContextActivator.java b/cave/com.raytheon.uf.viz.d2d.ui/src/com/raytheon/uf/viz/d2d/ui/perspectives/D2DContextActivator.java index e3d7450aba..34dd5e7761 100644 --- a/cave/com.raytheon.uf.viz.d2d.ui/src/com/raytheon/uf/viz/d2d/ui/perspectives/D2DContextActivator.java +++ b/cave/com.raytheon.uf.viz.d2d.ui/src/com/raytheon/uf/viz/d2d/ui/perspectives/D2DContextActivator.java @@ -19,14 +19,14 @@ **/ package com.raytheon.uf.viz.d2d.ui.perspectives; -import org.eclipse.ui.IPartListener2; +import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartReference; -import com.raytheon.uf.viz.core.ContextManager; import com.raytheon.uf.viz.core.IDisplayPane; import com.raytheon.uf.viz.core.IDisplayPaneContainer; import com.raytheon.uf.viz.d2d.core.ID2DRenderableDisplay; +import com.raytheon.viz.ui.perspectives.AbstractWorkbenchPartContextActivator; /** * Activates context for D2D UI for IDisplayPaneContainers with @@ -46,15 +46,20 @@ import com.raytheon.uf.viz.d2d.core.ID2DRenderableDisplay; * @version 1.0 */ -public class D2DContextActivator implements IPartListener2 { +public class D2DContextActivator extends AbstractWorkbenchPartContextActivator { - private ContextManager contextManager; - - D2DContextActivator(ContextManager contextManager) { - this.contextManager = contextManager; + D2DContextActivator(IWorkbenchPage page) { + super(page); } - private boolean hasD2DDisplay(IWorkbenchPartReference partRef) { + /* + * (non-Javadoc) + * + * @see com.raytheon.viz.ui.perspectives.AbstractPerspectiveContextManager# + * isPerspectivePart(org.eclipse.ui.IWorkbenchPartReference) + */ + @Override + protected boolean isPerspectivePart(IWorkbenchPartReference partRef) { if (partRef != null) { IWorkbenchPart part = partRef.getPart(false); if (part instanceof IDisplayPaneContainer) { @@ -69,104 +74,4 @@ public class D2DContextActivator implements IPartListener2 { return false; } - private void deactivate(IWorkbenchPartReference partRef) { - if (hasD2DDisplay(partRef)) { - contextManager.deactivateContexts(this); - } - } - - private void activate(IWorkbenchPartReference partRef) { - if (hasD2DDisplay(partRef)) { - contextManager.activateContexts(this); - } - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.IPartListener2#partActivated(org.eclipse.ui. - * IWorkbenchPartReference) - */ - @Override - public void partActivated(IWorkbenchPartReference partRef) { - activate(partRef); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.IPartListener2#partBroughtToTop(org.eclipse.ui. - * IWorkbenchPartReference) - */ - @Override - public void partBroughtToTop(IWorkbenchPartReference partRef) { - activate(partRef); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.IPartListener2#partClosed(org.eclipse.ui. - * IWorkbenchPartReference) - */ - @Override - public void partClosed(IWorkbenchPartReference partRef) { - deactivate(partRef); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.IPartListener2#partDeactivated(org.eclipse.ui. - * IWorkbenchPartReference) - */ - @Override - public void partDeactivated(IWorkbenchPartReference partRef) { - deactivate(partRef); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui. - * IWorkbenchPartReference) - */ - @Override - public void partOpened(IWorkbenchPartReference partRef) { - activate(partRef); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.IPartListener2#partHidden(org.eclipse.ui. - * IWorkbenchPartReference) - */ - @Override - public void partHidden(IWorkbenchPartReference partRef) { - deactivate(partRef); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.IPartListener2#partVisible(org.eclipse.ui. - * IWorkbenchPartReference) - */ - @Override - public void partVisible(IWorkbenchPartReference partRef) { - activate(partRef); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.IPartListener2#partInputChanged(org.eclipse.ui. - * IWorkbenchPartReference) - */ - @Override - public void partInputChanged(IWorkbenchPartReference partRef) { - - } - } diff --git a/cave/com.raytheon.uf.viz.d2d.ui/src/com/raytheon/uf/viz/d2d/ui/perspectives/D2DPerspectiveManager.java b/cave/com.raytheon.uf.viz.d2d.ui/src/com/raytheon/uf/viz/d2d/ui/perspectives/D2DPerspectiveManager.java index 3d7a0bab79..b2adc942fc 100644 --- a/cave/com.raytheon.uf.viz.d2d.ui/src/com/raytheon/uf/viz/d2d/ui/perspectives/D2DPerspectiveManager.java +++ b/cave/com.raytheon.uf.viz.d2d.ui/src/com/raytheon/uf/viz/d2d/ui/perspectives/D2DPerspectiveManager.java @@ -36,7 +36,6 @@ import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.time.DataTime; -import com.raytheon.uf.viz.core.ContextManager; import com.raytheon.uf.viz.core.IDisplayPane; import com.raytheon.uf.viz.core.IDisplayPaneContainer; import com.raytheon.uf.viz.core.drawables.IDescriptor; @@ -119,13 +118,9 @@ public class D2DPerspectiveManager extends AbstractCAVEPerspectiveManager { private static Map legendActions = new HashMap(); - private D2DContextActivator contextActivator; - @Override public void open() { - contextActivator = new D2DContextActivator( - ContextManager.getInstance(perspectiveWindow)); - page.addPartListener(contextActivator); + contextActivator = new D2DContextActivator(page); Procedure procedure = new Procedure(); List bundles = new ArrayList(); for (MapScale scale : MapScales.getInstance().getScales()) { @@ -455,53 +450,4 @@ public class D2DPerspectiveManager extends AbstractCAVEPerspectiveManager { return new ChangeLegendModeAction(mode, rsc); } - /* - * (non-Javadoc) - * - * @see com.raytheon.viz.ui.perspectives.AbstractCAVEPerspectiveManager# - * activateInternal() - */ - @Override - protected void activateInternal() { - super.activateInternal(); - page.addPartListener(contextActivator); - } - - /* - * (non-Javadoc) - * - * @see - * com.raytheon.viz.ui.perspectives.AbstractVizPerspectiveManager#deactivate - * () - */ - @Override - public void deactivate() { - super.deactivate(); - page.removePartListener(contextActivator); - } - - /* - * (non-Javadoc) - * - * @see com.raytheon.viz.ui.perspectives.AbstractVizPerspectiveManager# - * activateContexts(com.raytheon.uf.viz.core.ContextManager) - */ - @Override - protected void activateContexts(ContextManager manager) { - super.activateContexts(manager); - contextActivator.partActivated(page.getActivePartReference()); - } - - /* - * (non-Javadoc) - * - * @see com.raytheon.viz.ui.perspectives.AbstractVizPerspectiveManager# - * deactivateContexts(com.raytheon.uf.viz.core.ContextManager) - */ - @Override - protected void deactivateContexts(ContextManager manager) { - super.deactivateContexts(manager); - contextActivator.partDeactivated(page.getActivePartReference()); - } - } diff --git a/cave/com.raytheon.viz.gfe/plugin.xml b/cave/com.raytheon.viz.gfe/plugin.xml index 21c8c077e4..4d4c4a2978 100644 --- a/cave/com.raytheon.viz.gfe/plugin.xml +++ b/cave/com.raytheon.viz.gfe/plugin.xml @@ -1855,8 +1855,10 @@ - + @@ -2048,9 +2050,6 @@ - - @@ -2058,5 +2057,11 @@ id="com.raytheon.viz.ui.loopContext"> + + + + diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/perspective/GFEContextActivator.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/perspective/GFEContextActivator.java new file mode 100644 index 0000000000..340ca44a1d --- /dev/null +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/perspective/GFEContextActivator.java @@ -0,0 +1,82 @@ +/** + * This software was developed and / or modified by Raytheon Company, + * pursuant to Contract DG133W-05-CQ-1067 with the US Government. + * + * U.S. EXPORT CONTROLLED TECHNICAL DATA + * This software product contains export-restricted data whose + * export/transfer/disclosure is restricted by U.S. law. Dissemination + * to non-U.S. persons whether in the United States or abroad requires + * an export license or other authorization. + * + * Contractor Name: Raytheon Company + * Contractor Address: 6825 Pine Street, Suite 340 + * Mail Stop B8 + * Omaha, NE 68106 + * 402.291.0100 + * + * See the AWIPS II Master Rights File ("Master Rights File.pdf") for + * further licensing information. + **/ +package com.raytheon.viz.gfe.perspective; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchPartReference; + +import com.raytheon.uf.viz.core.IDisplayPane; +import com.raytheon.uf.viz.core.IDisplayPaneContainer; +import com.raytheon.viz.gfe.GridManagerView; +import com.raytheon.viz.gfe.core.GFEMapRenderableDisplay; +import com.raytheon.viz.ui.perspectives.AbstractWorkbenchPartContextActivator; + +/** + * Context activator for GFE perspective parts + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date         Ticket#    Engineer    Description
+ * ------------ ---------- ----------- --------------------------
+ * Jun 21, 2012            mschenke     Initial creation
+ * 
+ * 
+ * + * @author mschenke + * @version 1.0 + */ + +public class GFEContextActivator extends AbstractWorkbenchPartContextActivator { + + /** + * @param page + */ + GFEContextActivator(IWorkbenchPage page) { + super(page); + } + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.viz.ui.perspectives.AbstractPerspectiveContextActivator# + * isPerspectivePart(org.eclipse.ui.IWorkbenchPartReference) + */ + @Override + protected boolean isPerspectivePart(IWorkbenchPartReference partRef) { + if (GridManagerView.ID.equals(partRef.getId())) { + return true; + } else { + IWorkbenchPart part = partRef.getPart(false); + if (part instanceof IDisplayPaneContainer) { + IDisplayPaneContainer container = (IDisplayPaneContainer) part; + for (IDisplayPane pane : container.getDisplayPanes()) { + if (pane.getRenderableDisplay() instanceof GFEMapRenderableDisplay) { + return true; + } + } + } + } + return false; + } +} diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/perspective/GFEPerspectiveManager.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/perspective/GFEPerspectiveManager.java index 638e528a2e..eb6dd1c285 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/perspective/GFEPerspectiveManager.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/perspective/GFEPerspectiveManager.java @@ -19,7 +19,6 @@ **/ package com.raytheon.viz.gfe.perspective; -import java.util.ArrayList; import java.util.List; import org.eclipse.core.commands.Command; @@ -100,12 +99,15 @@ public class GFEPerspectiveManager extends AbstractCAVEPerspectiveManager { /** The GFE Perspective Class */ public static final String GFE_PERSPECTIVE = "com.raytheon.viz.ui.GFEPerspective"; + private static boolean keybindingsCreated = false; + public GFEPerspectiveManager() { } @Override public void open() { + contextActivator = new GFEContextActivator(page); loadDefaultBundle("gfe/default-procedure.xml"); AbstractEditor gfeEditor = (AbstractEditor) EditorUtil @@ -127,7 +129,10 @@ public class GFEPerspectiveManager extends AbstractCAVEPerspectiveManager { mapMgr.loadMapByBundleName(map); } - defineKeys(); + if (!keybindingsCreated) { + registerKeyBindings(); + keybindingsCreated = true; + } DataManager dm = DataManager.getInstance(perspectiveWindow); IRenderableDisplay display = pane.getRenderableDisplay(); @@ -256,7 +261,7 @@ public class GFEPerspectiveManager extends AbstractCAVEPerspectiveManager { return items; } - private void defineKeys() { + private static void registerKeyBindings() { ICommandService commandService = (ICommandService) PlatformUI .getWorkbench().getService(ICommandService.class); @@ -275,21 +280,9 @@ public class GFEPerspectiveManager extends AbstractCAVEPerspectiveManager { PythonPreferenceStore prefs = Activator.getDefault() .getPreferenceStore(); try { - Scheme scheme = bindingManager.getScheme(schemeId); - scheme.define(activeScheme.getName(), - activeScheme.getDescription(), activeScheme.getParentId()); - // get currentBindings and remove any GFE ShortCut bindings String contextId = "com.raytheon.viz.gfe.GFEShortCutContext"; - Binding[] currentBindings = bindingService.getBindings(); - List newBindings = new ArrayList(); - for (Binding binding : currentBindings) { - if (!binding.getContextId().equals(contextId)) { - newBindings.add(binding); - } - } - bindingManager.setBindings(newBindings - .toArray(new Binding[newBindings.size()])); + bindingManager.setBindings(bindingService.getBindings()); for (int i = 1; i < 201; i++) { String shortCut = "ShortCut" + i; @@ -386,10 +379,10 @@ public class GFEPerspectiveManager extends AbstractCAVEPerspectiveManager { // add the binding bindingManager.addBinding(new KeyBinding(keySequence, parmCmd, schemeId, contextId, null, null, null, - Binding.USER)); + Binding.SYSTEM)); } } - bindingService.savePreferences(bindingManager.getScheme(schemeId), + bindingService.savePreferences(activeScheme, bindingManager.getBindings()); } catch (Throwable e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); diff --git a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/perspectives/AbstractCAVEPerspectiveManager.java b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/perspectives/AbstractCAVEPerspectiveManager.java index b4e8287d9f..2518086082 100644 --- a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/perspectives/AbstractCAVEPerspectiveManager.java +++ b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/perspectives/AbstractCAVEPerspectiveManager.java @@ -28,6 +28,7 @@ import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewReference; import com.raytheon.uf.common.localization.LocalizationContext.LocalizationLevel; +import com.raytheon.uf.viz.core.ContextManager; import com.raytheon.uf.viz.core.IDisplayPaneContainer; import com.raytheon.uf.viz.core.localization.LocalizationManager; import com.raytheon.uf.viz.core.rsc.IInputHandler; @@ -54,10 +55,60 @@ import com.raytheon.viz.ui.statusline.TimeDisplay; public abstract class AbstractCAVEPerspectiveManager extends AbstractVizPerspectiveManager { + /** Optional workbench part context activator for the perspective */ + protected AbstractWorkbenchPartContextActivator contextActivator; + + /* + * (non-Javadoc) + * + * @see com.raytheon.viz.ui.perspectives.AbstractVizPerspectiveManager# + * activateContexts(com.raytheon.uf.viz.core.ContextManager) + */ + @Override + protected void activateContexts(ContextManager manager) { + super.activateContexts(manager); + if (contextActivator != null) { + contextActivator.partActivated(page.getActivePartReference()); + } + } + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.viz.ui.perspectives.AbstractVizPerspectiveManager#deactivate + * () + */ + @Override + public void deactivate() { + super.deactivate(); + if (contextActivator != null) { + page.removePartListener(contextActivator); + } + } + + /* + * (non-Javadoc) + * + * @see com.raytheon.viz.ui.perspectives.AbstractVizPerspectiveManager# + * deactivateContexts(com.raytheon.uf.viz.core.ContextManager) + */ + @Override + protected void deactivateContexts(ContextManager manager) { + super.deactivateContexts(manager); + if (contextActivator != null) { + contextActivator.partDeactivated(page.getActivePartReference()); + } + } + @Override protected void activateInternal() { super.activateInternal(); + if (contextActivator != null) { + page.addPartListener(contextActivator); + } + // repaint containers for (IEditorReference ref : page.getEditorReferences()) { IEditorPart part = ref.getEditor(false); @@ -91,18 +142,6 @@ public abstract class AbstractCAVEPerspectiveManager extends return new IInputHandler[0]; } - /* - * (non-Javadoc) - * - * @see - * com.raytheon.viz.ui.perspectives.AbstractVizPerspectiveManager#open() - */ - @Override - protected void open() { - // TODO Auto-generated method stub - - } - /* * (non-Javadoc) * diff --git a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/perspectives/AbstractWorkbenchPartContextActivator.java b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/perspectives/AbstractWorkbenchPartContextActivator.java new file mode 100644 index 0000000000..812f74e90b --- /dev/null +++ b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/perspectives/AbstractWorkbenchPartContextActivator.java @@ -0,0 +1,171 @@ +/** + * This software was developed and / or modified by Raytheon Company, + * pursuant to Contract DG133W-05-CQ-1067 with the US Government. + * + * U.S. EXPORT CONTROLLED TECHNICAL DATA + * This software product contains export-restricted data whose + * export/transfer/disclosure is restricted by U.S. law. Dissemination + * to non-U.S. persons whether in the United States or abroad requires + * an export license or other authorization. + * + * Contractor Name: Raytheon Company + * Contractor Address: 6825 Pine Street, Suite 340 + * Mail Stop B8 + * Omaha, NE 68106 + * 402.291.0100 + * + * See the AWIPS II Master Rights File ("Master Rights File.pdf") for + * further licensing information. + **/ +package com.raytheon.viz.ui.perspectives; + +import org.eclipse.ui.IPartListener2; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPartReference; + +import com.raytheon.uf.viz.core.ContextManager; + +/** + * Class that activates contexts registered for the object with the + * com.raytheon.uf.viz.core.classContext extension point based on workbench + * parts + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date         Ticket#    Engineer    Description
+ * ------------ ---------- ----------- --------------------------
+ * Jun 21, 2012            mschenke     Initial creation
+ * 
+ * 
+ * + * @author mschenke + * @version 1.0 + */ + +public abstract class AbstractWorkbenchPartContextActivator implements + IPartListener2 { + + protected IWorkbenchPage page; + + private ContextManager contextManager; + + protected AbstractWorkbenchPartContextActivator(IWorkbenchPage page) { + this.page = page; + this.contextManager = ContextManager.getInstance(page + .getWorkbenchWindow()); + register(); + } + + public void register() { + page.addPartListener(this); + } + + public void unregister() { + page.removePartListener(this); + } + + protected abstract boolean isPerspectivePart(IWorkbenchPartReference partRef); + + private void deactivate(IWorkbenchPartReference partRef) { + if (isPerspectivePart(partRef)) { + contextManager.deactivateContexts(this); + } + } + + private void activate(IWorkbenchPartReference partRef) { + if (isPerspectivePart(partRef)) { + contextManager.activateContexts(this); + } + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IPartListener2#partActivated(org.eclipse.ui. + * IWorkbenchPartReference) + */ + @Override + public void partActivated(IWorkbenchPartReference partRef) { + activate(partRef); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IPartListener2#partBroughtToTop(org.eclipse.ui. + * IWorkbenchPartReference) + */ + @Override + public void partBroughtToTop(IWorkbenchPartReference partRef) { + activate(partRef); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IPartListener2#partClosed(org.eclipse.ui. + * IWorkbenchPartReference) + */ + @Override + public void partClosed(IWorkbenchPartReference partRef) { + deactivate(partRef); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IPartListener2#partDeactivated(org.eclipse.ui. + * IWorkbenchPartReference) + */ + @Override + public void partDeactivated(IWorkbenchPartReference partRef) { + deactivate(partRef); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui. + * IWorkbenchPartReference) + */ + @Override + public void partOpened(IWorkbenchPartReference partRef) { + activate(partRef); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IPartListener2#partHidden(org.eclipse.ui. + * IWorkbenchPartReference) + */ + @Override + public void partHidden(IWorkbenchPartReference partRef) { + deactivate(partRef); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IPartListener2#partVisible(org.eclipse.ui. + * IWorkbenchPartReference) + */ + @Override + public void partVisible(IWorkbenchPartReference partRef) { + activate(partRef); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IPartListener2#partInputChanged(org.eclipse.ui. + * IWorkbenchPartReference) + */ + @Override + public void partInputChanged(IWorkbenchPartReference partRef) { + + } + +}