From b122732f456593232974d4be0362e59fb6db8d7c Mon Sep 17 00:00:00 2001 From: Uwe Stieber Date: Tue, 6 Mar 2007 17:15:17 +0000 Subject: [PATCH] [fix] [161195] Properties action menu contribution is handled as all other menu contributions and can be suppressed via ISystemViewElementAdapter now --- .../rse/internal/ui/view/SystemView.java | 25 ++++++++++++------- .../ui/view/SystemViewConnectionAdapter.java | 20 ++++++++++++++- .../ui/view/SystemViewFilterAdapter.java | 2 +- .../ui/view/SystemViewFilterPoolAdapter.java | 2 +- .../SystemViewFilterPoolReferenceAdapter.java | 2 +- .../SystemViewFilterReferenceAdapter.java | 3 +-- .../view/SystemViewFilterStringAdapter.java | 2 +- .../ui/view/SystemViewMessageAdapter.java | 2 +- .../ui/view/SystemViewPromptableAdapter.java | 2 +- .../ui/view/SystemViewRootInputAdapter.java | 2 +- .../ui/view/SystemViewScratchpadAdapter.java | 2 +- .../ui/view/SystemViewSubSystemAdapter.java | 2 +- .../team/SystemTeamViewCategoryAdapter.java | 2 +- .../team/SystemTeamViewProfileAdapter.java | 2 +- ...TeamViewSubSystemConfigurationAdapter.java | 3 +-- .../ui/view/AbstractSystemViewAdapter.java | 16 ++++++++++++ .../ui/view/ISystemViewElementAdapter.java | 8 ++++++ 17 files changed, 72 insertions(+), 25 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java index 9db0d82fcdf..3d92f3172c5 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java @@ -189,6 +189,7 @@ public class SystemView extends SafeTreeViewer implements ISystemTree, ISystemRe protected SystemCommonRenameAction renameAction; // for common rename menu item protected SystemCommonSelectAllAction selectAllAction; // for common Ctrl+A select-all // special flags needed when building popup menu, set after examining selections + protected boolean selectionShowPropertiesAction; protected boolean selectionShowRefreshAction; protected boolean selectionShowOpenViewActions; protected boolean selectionShowGenericShowInTableAction; @@ -872,20 +873,15 @@ public class SystemView extends SafeTreeViewer implements ISystemTree, ISystemRe ((ISystemAction) getDeleteAction()).setInputs(getShell(), this, selection); menu.add(new Separator()); } - - - - // PROPERTIES ACTION... // This is supplied by the system, so we pretty much get it for free. It finds the // registered propertyPages extension points registered for the selected object's class type. //propertyDialogAction.selectionChanged(selection); - - PropertyDialogAction pdAction = getPropertyDialogAction(); - - if (pdAction.isApplicableForSelection()) menu.appendToGroup(ISystemContextMenuConstants.GROUP_PROPERTIES, pdAction); - + if (showProperties()) { + PropertyDialogAction pdAction = getPropertyDialogAction(); + if (pdAction.isApplicableForSelection()) menu.appendToGroup(ISystemContextMenuConstants.GROUP_PROPERTIES, pdAction); + } // GO INTO ACTION... // OPEN IN NEW WINDOW ACTION... @@ -4189,6 +4185,7 @@ public class SystemView extends SafeTreeViewer implements ISystemTree, ISystemRe // initial these variables to true. Then if set to false even once, leave as false always... + selectionShowPropertiesAction = true; selectionShowRefreshAction = true; selectionShowOpenViewActions = true; selectionShowGenericShowInTableAction = true; @@ -4210,6 +4207,8 @@ public class SystemView extends SafeTreeViewer implements ISystemTree, ISystemRe ISystemViewElementAdapter adapter = getViewAdapter(element); if (adapter == null) continue; + if (selectionShowPropertiesAction) selectionShowPropertiesAction = adapter.showProperties(element); + if (selectionShowRefreshAction) selectionShowRefreshAction = adapter.showRefresh(element); if (selectionShowOpenViewActions) selectionShowOpenViewActions = adapter.showOpenViewActions(element); @@ -4256,6 +4255,14 @@ public class SystemView extends SafeTreeViewer implements ISystemTree, ISystemRe } + /** + * Decides whether to even show the properties menu item. + * Assumes scanSelections() has already been called + */ + protected boolean showProperties() { + return selectionShowPropertiesAction; + } + /** * Decides whether to even show the refresh menu item. * Assumes scanSelections() has already been called diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewConnectionAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewConnectionAdapter.java index 916ae3a43fe..640cbaa964d 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewConnectionAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewConnectionAdapter.java @@ -59,6 +59,7 @@ import org.eclipse.rse.ui.view.ISystemPropertyConstants; import org.eclipse.rse.ui.view.ISystemViewElementAdapter; import org.eclipse.rse.ui.view.ISystemViewInputProvider; import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.dialogs.PropertyDialogAction; import org.eclipse.ui.views.framelist.GoIntoAction; import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.eclipse.ui.views.properties.PropertyDescriptor; @@ -70,7 +71,7 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor; */ public class SystemViewConnectionAdapter extends AbstractSystemViewAdapter - implements ISystemViewElementAdapter, IRSEUserIdConstants + implements IRSEUserIdConstants { private SystemNewConnectionFromExistingConnectionAction anotherConnectionAction = null; //private SystemUpdateConnectionAction updateAction = null; @@ -262,6 +263,23 @@ public class SystemViewConnectionAdapter return super.showOpenViewActions(element); } + /* (non-Javadoc) + * @see org.eclipse.rse.ui.view.AbstractSystemViewAdapter#showProperties(java.lang.Object) + */ + public boolean showProperties(Object element) { + // bugzilla#161195: _ALL_ actions needs to be passed to the system type for approval. + // _Never_ add any action without the system type provider having said ok to this. + if (element instanceof IHost) { + IRSESystemType sysType = getSystemTypeForHost((IHost)element); + Object adapter = sysType != null ? sysType.getAdapter(IRSESystemType.class) : null; + RSESystemTypeAdapter sysTypeAdapter = adapter instanceof RSESystemTypeAdapter ? (RSESystemTypeAdapter)adapter : null; + if (sysTypeAdapter != null) { + return sysTypeAdapter.acceptContextMenuActionContribution((IHost)element, PropertyDialogAction.class); + } + } + return super.showProperties(element); + } + /* (non-Javadoc) * @see org.eclipse.rse.ui.view.AbstractSystemViewAdapter#showRefresh(java.lang.Object) */ diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterAdapter.java index 2a60ecb96c2..e52cdf0cb11 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterAdapter.java @@ -63,7 +63,7 @@ import org.eclipse.ui.views.properties.PropertyDescriptor; * behaviour. If this is done, you must register your subclass with the * platform's adapter manager in your plugin class's startup method. */ -public class SystemViewFilterAdapter extends AbstractSystemViewAdapter implements ISystemViewElementAdapter +public class SystemViewFilterAdapter extends AbstractSystemViewAdapter { //private static String translatedFilterString = null; // ------------------- diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterPoolAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterPoolAdapter.java index fa89c79b4b4..432454b42fa 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterPoolAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterPoolAdapter.java @@ -45,7 +45,7 @@ import org.eclipse.ui.views.properties.PropertyDescriptor; * These are the masters, and only shown in work-with for the master. * These are children of SubSystemConfiguration objects */ -public class SystemViewFilterPoolAdapter extends AbstractSystemViewAdapter implements ISystemViewElementAdapter +public class SystemViewFilterPoolAdapter extends AbstractSystemViewAdapter { protected String translatedType; //protected Object parent; diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterPoolReferenceAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterPoolReferenceAdapter.java index e1d70f31107..d1dc9cf3586 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterPoolReferenceAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterPoolReferenceAdapter.java @@ -48,7 +48,7 @@ import org.eclipse.ui.views.properties.PropertyDescriptor; * These are children of SubSystem objects */ public class SystemViewFilterPoolReferenceAdapter - extends AbstractSystemViewAdapter implements ISystemViewElementAdapter + extends AbstractSystemViewAdapter { protected String translatedType; //protected Object parent; diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterReferenceAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterReferenceAdapter.java index 9b47cba4db3..cb359b81d65 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterReferenceAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterReferenceAdapter.java @@ -71,8 +71,7 @@ import org.eclipse.ui.views.properties.PropertyDescriptor; * These are children of SystemFilterPoolReference and SystemFilterReference objects */ public class SystemViewFilterReferenceAdapter - extends AbstractSystemViewAdapter - implements ISystemViewElementAdapter + extends AbstractSystemViewAdapter { //private static String translatedFilterString = null; // ------------------- diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterStringAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterStringAdapter.java index 58a0979bab7..b7e796bf74c 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterStringAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterStringAdapter.java @@ -41,7 +41,7 @@ import org.eclipse.ui.views.properties.PropertyDescriptor; /** * Default Adapter for displaying filter string objects in tree views. */ -public class SystemViewFilterStringAdapter extends AbstractSystemViewAdapter implements ISystemViewElementAdapter +public class SystemViewFilterStringAdapter extends AbstractSystemViewAdapter { //private static String translatedFilterString = null; // ------------------- diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewMessageAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewMessageAdapter.java index 2a9897d0581..f98ab3d0782 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewMessageAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewMessageAdapter.java @@ -35,7 +35,7 @@ import org.eclipse.ui.views.properties.IPropertyDescriptor; *

*/ public class SystemViewMessageAdapter - extends AbstractSystemViewAdapter implements ISystemViewElementAdapter + extends AbstractSystemViewAdapter { /** diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewPromptableAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewPromptableAdapter.java index 0686f6e3342..27068fe1fea 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewPromptableAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewPromptableAdapter.java @@ -33,7 +33,7 @@ import org.eclipse.swt.widgets.Shell; * These are objects that, when expanded, launch a wizard to create something. */ public class SystemViewPromptableAdapter - extends AbstractSystemViewAdapter implements ISystemViewElementAdapter + extends AbstractSystemViewAdapter { protected SystemRunAction runAction; diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewRootInputAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewRootInputAdapter.java index 02396b7fb84..35e5288b89d 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewRootInputAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewRootInputAdapter.java @@ -36,7 +36,7 @@ import org.eclipse.swt.widgets.Shell; /** * Adapter for the root-providing object of the SystemView tree viewer. */ -public class SystemViewRootInputAdapter extends AbstractSystemViewAdapter implements ISystemViewElementAdapter +public class SystemViewRootInputAdapter extends AbstractSystemViewAdapter { private SystemNewConnectionPromptObject newConnPrompt; private Object[] newConnPromptArray; diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewScratchpadAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewScratchpadAdapter.java index aaf8b21f96a..99425888461 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewScratchpadAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewScratchpadAdapter.java @@ -38,7 +38,7 @@ import org.eclipse.swt.widgets.Shell; /** * Adapter for the root-providing object of the SystemView tree viewer. */ -public class SystemViewScratchpadAdapter extends AbstractSystemViewAdapter implements ISystemViewElementAdapter,ISystemRemoteElementAdapter,ISystemDragDropAdapter +public class SystemViewScratchpadAdapter extends AbstractSystemViewAdapter implements ISystemRemoteElementAdapter,ISystemDragDropAdapter { private SystemPasteFromClipboardAction _pasteToScratchpadAction = null; diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewSubSystemAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewSubSystemAdapter.java index 8938ec69931..6b32427a6d0 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewSubSystemAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewSubSystemAdapter.java @@ -48,7 +48,7 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor; * These are children of SystemConnection objects */ public class SystemViewSubSystemAdapter extends AbstractSystemViewAdapter - implements ISystemViewElementAdapter, ISystemPropertyConstants, IRSEUserIdConstants + implements ISystemPropertyConstants, IRSEUserIdConstants { protected String translatedType; // for reset property support diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewCategoryAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewCategoryAdapter.java index 4a2db5ec08f..bf519274c26 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewCategoryAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewCategoryAdapter.java @@ -41,7 +41,7 @@ import org.eclipse.ui.views.properties.PropertyDescriptor; */ public class SystemTeamViewCategoryAdapter extends AbstractSystemViewAdapter - implements ISystemViewElementAdapter, IRSEUserIdConstants + implements IRSEUserIdConstants { private boolean actionsCreated = false; diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewProfileAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewProfileAdapter.java index 0227a29375c..aa03cc183c7 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewProfileAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewProfileAdapter.java @@ -50,7 +50,7 @@ import org.eclipse.ui.views.properties.PropertyDescriptor; */ public class SystemTeamViewProfileAdapter extends AbstractSystemViewAdapter - implements ISystemViewElementAdapter, IRSEUserIdConstants + implements IRSEUserIdConstants { private boolean actionsCreated = false; diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewSubSystemConfigurationAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewSubSystemConfigurationAdapter.java index dbe84d8bbef..20ae433f0a7 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewSubSystemConfigurationAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/team/SystemTeamViewSubSystemConfigurationAdapter.java @@ -38,8 +38,7 @@ import org.eclipse.ui.views.properties.PropertyDescriptor; * the Team view. */ public class SystemTeamViewSubSystemConfigurationAdapter - extends AbstractSystemViewAdapter - implements ISystemViewElementAdapter + extends AbstractSystemViewAdapter { private boolean actionsCreated = false; //private Hashtable categoriesByProfile = new Hashtable(); diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.java index 3148bd46ca0..0e965cb0b1f 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.java @@ -1035,6 +1035,22 @@ public abstract class AbstractSystemViewAdapter return true; } + // ---------------------------------------------- + // METHODS TO SUPPORT COMMON PROPERTIES ACTION... + // ---------------------------------------------- + /** + * Overridable by subclasses, and usually is.
+ * Return true if we should show the properties action in the popup for the given element. + * Note the actual work to show the properties dialog is handled for you. + *

+ * Default is true. + */ + public boolean showProperties(Object element) + { + return true; + } + + // ------------------------------------------------------------ // METHODS TO SUPPORT COMMON OPEN-IN-NEW-PERSPECTIVE ACTIONS... // ------------------------------------------------------------ diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/ISystemViewElementAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/ISystemViewElementAdapter.java index 49d2756ed40..90004ec64d1 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/ISystemViewElementAdapter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/ISystemViewElementAdapter.java @@ -321,6 +321,14 @@ public interface ISystemViewElementAdapter extends IPropertySource, ISystemDragD */ public boolean showRefresh(Object element); + // ---------------------------------------------- + // METHODS TO SUPPORT COMMON PROPERTIES ACTION... + // ---------------------------------------------- + /** + * Return true if we should show the properties action in the popup for the given element. + */ + public boolean showProperties(Object element); + // ------------------------------------------------------------ // METHODS TO SUPPORT COMMON OPEN-IN-NEW-PERSPECTIVE ACTIONS... // ------------------------------------------------------------