|
org.eclipse.rse.ui.actions
Class SystemBaseDialogAction
java.lang.Object
org.eclipse.core.commands.common.EventManager
org.eclipse.jface.action.AbstractAction
org.eclipse.jface.action.Action
org.eclipse.rse.ui.actions.SystemBaseAction
org.eclipse.rse.ui.actions.SystemBaseDialogAction
-
All Implemented Interfaces:
-
IAction,
ISelectionChangedListener,
ISystemAction,
ISystemDialogAction
-
Direct Known Subclasses:
-
SystemBaseCopyAction,
SystemBaseWizardAction,
SystemChangeFilterAction,
SystemFilterAbstractFilterAction,
SystemFilterAbstractFilterPoolAction,
SystemSelectRemoteFileAction,
SystemSelectRemoteFolderAction
-
public abstract class SystemBaseDialogAction
- extends
SystemBaseAction
- implements
ISystemDialogAction
A specialization for Action for actions that put up dialogs.
These actions have some common requirements:
They need to take the parent Shell object in the constructor or later perhaps via setParent
They need to be able to set the input value for the dialog. This is typically related to
what is currently selected.
They need to be able to get the output value from the dialog. This can be queried by
calling getValue after the action runs.
This subclass of SystemBaseAction implements the run() method in a way optimized for the processing
of dialogs: it calls an abstract method to create the dialog, then sets the input from the action's
value (if set) or selection (otherwise) and opens the dialog. After, it calls an abstract method to
extract the dialog's output object which is used to set this action's value, for the benefit of the
caller.
To use this dialog, subclass it and override the following methods :
createDialog(Shell)
getDialogValue(Dialog)
run() but ONLY if you don't want the default implementation of this method.
In addition to the methods you must override, you can optionally call various methods to configure
this action. In addition to those in the parent class, this class offers these configuration methods:
setDialogHelp(String) to set the context help ID for the dialog, for cases where the dialog is generic
and its help depends on context and hence cannot be hardcoded in the dialog class.
setValue(Object) to the set the input object to pass to the dialog, for cases where the current selection
is not what you want to pass to the dialog.
setNeedsProgressMonitor(boolean) to specify if the dialog is to display a progress monitor or not, for cases
where this decision depends on context and hence cannot be hardcoded in the dialog class.
setProcessAllSelections(boolean) to specify the behaviour when there are multiple objects selected. By
default, the dialog will be created and processed once for each selected object, but you can specify that you instead
want to only invoke the dialog once and pass in all selected objects as a single ISelection object.
Fields inherited from interface org.eclipse.jface.action.
IAction
|
AS_CHECK_BOX,
AS_DROP_DOWN_MENU,
AS_PUSH_BUTTON,
AS_RADIO_BUTTON,
AS_UNSPECIFIED,
CHECKED,
DESCRIPTION,
ENABLED,
HANDLED,
IMAGE,
RESULT,
TEXT,
TOOL_TIP_TEXT
|
Method Summary
|
protected abstract
Dialog
|
createDialog
(
Shell parent)
If you decide to use the supplied run method as is,
then you must override this method to create and return
the dialog that is displayed by the default run method
implementation. |
String
|
getDialogHelpContextId
()
Return the help Id destined for the dialog this action brings up |
protected abstract
Object
|
getDialogValue
(
Dialog dlg)
If you decide to use the supplied run method as is,
then you must override this method to retrieve the data
from the dialog. |
boolean
|
getNeedsProgressMonitor
()
Return true if the action's dialog/wizard is to include a progress monitor |
protected boolean
|
getProcessAllSelections
()
Return setting of setProcessAllSelections. |
Object
|
getValue
()
Get the value, typically set in actionPerformed
after putting up the dialog, and holds the output
from the dialog. |
void
|
run
()
This is the method called by the system when the user
selects this action. |
void
|
setDialogHelp
(
String id)
When using generic dialogs, it is nice to offer non-generic help. |
void
|
setNeedsProgressMonitor
(boolean needs)
If desired, specify if you want to include a progress monitor in your
dialog or wizard. |
void
|
setProcessAllSelections
(boolean all)
If this action supports being enabled for multiple selections (the default,
but changable by calling allowOnMultipleSelections(false)), then by default
the default run() implementation will create and invoke the dialog once for each
item selected. |
void
|
setValue
(
Object value)
Set the value used as input to the dialog |
boolean
|
wasCancelled
()
Returns true if the user cancelled the dialog. |
protected boolean
|
wasNeedsProgressMonitorSet
()
Return true if the caller explicitly called setNeedsProgressMonitor |
Methods inherited from class org.eclipse.rse.ui.actions.
SystemBaseAction
|
allowOnMultipleSelection,
checkObjectType,
getContextMenuGroup,
getCurrentTreeView,
getFirstSelection,
getHelpContextId,
getNextSelection,
getRemoteAdapter,
getSelection,
getSelectionProvider,
getShell,
getShell,
getSystemConnection,
getViewAdapter,
getViewer,
isDummy,
isEnabled,
isSelectionSensitive,
issueTraceMessage,
selectionChanged,
setAvailableOffline,
setBusyCursor,
setContextMenuGroup,
setDisplayCursor,
setDisplayCursor,
setHelp,
setHost,
setInputs,
setSelection,
setSelectionProvider,
setSelectionSensitive,
setShell,
setTracing,
setTracing,
setViewer,
updateSelection
|
Methods inherited from class org.eclipse.jface.action.
Action
|
convertAccelerator,
convertAccelerator,
findKeyCode,
findKeyString,
findModifier,
findModifierString,
getAccelerator,
getActionDefinitionId,
getDescription,
getDisabledImageDescriptor,
getHelpListener,
getHoverImageDescriptor,
getId,
getImageDescriptor,
getMenuCreator,
getStyle,
getText,
getToolTipText,
isChecked,
isHandled,
notifyResult,
removeAcceleratorText,
removeMnemonics,
runWithEvent,
setAccelerator,
setActionDefinitionId,
setChecked,
setDescription,
setDisabledImageDescriptor,
setEnabled,
setHelpListener,
setHoverImageDescriptor,
setId,
setImageDescriptor,
setMenuCreator,
setText,
setToolTipText
|
Methods inherited from class java.lang.
Object
|
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait
|
Methods inherited from interface org.eclipse.rse.ui.actions.
ISystemAction
|
allowOnMultipleSelection,
getContextMenuGroup,
getHelpContextId,
getSelection,
getShell,
getViewer,
isDummy,
isSelectionSensitive,
setContextMenuGroup,
setHelp,
setInputs,
setSelection,
setSelectionSensitive,
setShell,
setViewer
|
Methods inherited from interface org.eclipse.jface.action.
IAction
|
addPropertyChangeListener,
getAccelerator,
getActionDefinitionId,
getDescription,
getDisabledImageDescriptor,
getHelpListener,
getHoverImageDescriptor,
getId,
getImageDescriptor,
getMenuCreator,
getStyle,
getText,
getToolTipText,
isChecked,
isEnabled,
isHandled,
removePropertyChangeListener,
runWithEvent,
setAccelerator,
setActionDefinitionId,
setChecked,
setDescription,
setDisabledImageDescriptor,
setEnabled,
setHelpListener,
setHoverImageDescriptor,
setId,
setImageDescriptor,
setMenuCreator,
setText,
setToolTipText
|
value
protected
Object value
processAll
protected boolean processAll
needsProgressMonitor
protected boolean needsProgressMonitor
needsProgressMonitorSet
protected boolean needsProgressMonitorSet
cancelled
protected boolean cancelled
dlgHelpId
protected
String dlgHelpId
SystemBaseDialogAction
protected SystemBaseDialogAction(
String text,
ImageDescriptor image,
Shell shell)
- Constructor for SystemBaseDialogAction when translated label is known. You must separately
call setToolTipText and setDescription to enable these if desired.
-
Parameters:
-
text - string to display in menu or toolbar -
image - icon to display in menu or toolbar. Can be null. -
shell - Shell of parent window. Can be null if you don't know it, but call setShell when you do.
SystemBaseDialogAction
protected SystemBaseDialogAction(
String text,
String tooltip,
ImageDescriptor image,
Shell shell)
- Constructor for SystemBaseDialogAction when translated label and tooltip are known. You must
separately call setDescription to enable this if desired.
-
Parameters:
-
text - string to display in menu or toolbar -
tooltip - string to display when user hovers mouse over action. -
image - icon to display in menu or toolbar. Can be null. -
shell - Shell of parent window. Can be null if you don't know it, but call setShell when you do.
SystemBaseDialogAction
protected SystemBaseDialogAction(
String text,
String tooltip,
String description,
ImageDescriptor image,
Shell shell)
- Constructor for SystemBaseDialogAction when translated label and tooltip and description are
all known.
-
Parameters:
-
text - string to display in menu or toolbar -
tooltip - string to display when user hovers mouse over action. -
description - string displayed in status bar of some displays. Longer than tooltip. -
image - icon to display in menu or toolbar. Can be null. -
shell - Shell of parent window. Can be null if you don't know it, but call setShell when you do.
getDialogHelpContextId
public
String getDialogHelpContextId()
- Return the help Id destined for the dialog this action brings up
-
-
getValue
public
Object getValue()
- Get the value, typically set in actionPerformed
after putting up the dialog, and holds the output
from the dialog.
-
-
Specified by:
-
getValue
in interface
ISystemDialogAction
-
getNeedsProgressMonitor
public boolean getNeedsProgressMonitor()
- Return true if the action's dialog/wizard is to include a progress monitor
-
-
wasNeedsProgressMonitorSet
protected boolean wasNeedsProgressMonitorSet()
- Return true if the caller explicitly called setNeedsProgressMonitor
-
-
getProcessAllSelections
protected boolean getProcessAllSelections()
- Return setting of setProcessAllSelections.
-
-
-
See Also:
-
setProcessAllSelections(boolean)
wasCancelled
public boolean wasCancelled()
- Returns true if the user cancelled the dialog.
The default way to guess at this is to test if the output from
getDialogValue was null or not. Override if you need to refine this.
-
-
Specified by:
-
wasCancelled
in interface
ISystemDialogAction
-
setDialogHelp
public void setDialogHelp(
String id)
- When using generic dialogs, it is nice to offer non-generic help.
If desired, set the help context ID here, and it will be passed on
to the generic dialog after instantiation of it.
-
-
setValue
public void setValue(
Object value)
- Set the value used as input to the dialog
-
-
Specified by:
-
setValue
in interface
ISystemDialogAction
-
setNeedsProgressMonitor
public void setNeedsProgressMonitor(boolean needs)
- If desired, specify if you want to include a progress monitor in your
dialog or wizard. If the dialog is a SystemPromptDialog or the Wizard
is a SystemWizardDialog, it will be passed on after instantiating the
dialog or wizard.
-
-
setProcessAllSelections
public void setProcessAllSelections(boolean all)
- If this action supports being enabled for multiple selections (the default,
but changable by calling allowOnMultipleSelections(false)), then by default
the default run() implementation will create and invoke the dialog once for each
item selected. Call this with true to change that behaviour so that the dialog
is only created and processed once.
Use this when the dialog itself will process all selected items at once.
The default is false.
-
-
Specified by:
-
setProcessAllSelections
in interface
ISystemDialogAction
-
run
public void run()
- This is the method called by the system when the user
selects this action. This is a default implementation
which:
- calls abstract method createDialog() to get the dialog
object. Child classes must implement this method.
- if the returned dialog implements ISystemPromptDialog, then
it will call setInputObject passing getValue() as the paramter.
If getValue returns null, then instead the currently selected objects
are passed as the parameter. If setProcessAllSelections has been called
then the current ISelection is passed, else the each object in the selection
is passed, and the dialog is displayed once per selected object.
Your dialog can then cast this input as necessary to initialize its input
fields, say. Presumably it knows what to cast it to. Note: code that
creates actions does not typically call setValue unless
the action is used in a UI that has no concept of ISelection, such as a
raw swt widget. ISelection is a JFace viewer concept.
- calls dlg.open(getShell()) on the dialog to display it.
- calls setValue(getDialogValue(dlg)) so callers can get the dialog output
via a call to getValue() on this action object. Again, this is typically only
used when launching actions from non-viewers, such as launching one dialog from
another dialog. When launching from popup-menus of viewers, use selectionChanged
instead. Either way, the object set or selected is passed on to the dialog,
if not null, by way of a call to the dialog's setInputObject method.
If this action is to be enabled when multiple items are selected
(the default) then the processing above is repeated once for every object
selected. If your dialog actually processes all the selected items, then
call setProcessAllSelections(true) to change the behaviour to only do all
of this once. In this case setInputObject will be called with the
entire IStructuredSelection object, and your dialog code can process each
of the objects in it.
Please note that if NO ITEMS are selected, we will still call createDialog
but not call setInput.
To use this default implementation you must implement
the createDialog method. Note we will also call
dlg.setBlockOnOpen(true) on the returned dialog to
force it to be modal.
-
-
Specified by:
-
run
in interface
IAction
-
Overrides:
-
run
in class
SystemBaseAction
-
-
See Also:
-
Action.run()
createDialog
protected abstract
Dialog createDialog(
Shell parent)
- If you decide to use the supplied run method as is,
then you must override this method to create and return
the dialog that is displayed by the default run method
implementation.
If you override actionPerformed with your own, then
simply implement this to return null as it won't be used.
-
-
-
See Also:
-
run()
getDialogValue
protected abstract
Object getDialogValue(
Dialog dlg)
- If you decide to use the supplied run method as is,
then you must override this method to retrieve the data
from the dialog. For SystemPromptDialog dialogs, this is simply
a matter of returning dlg.getOutputObject();
This is called by the run method after the dialog returns, and
wasCancelled() is false. Callers of this object can subsequently
retrieve this returned value by calling getValue. If you don't need
to pass a value back to the caller of this action, simply return null
from this method.
-
-
-
Parameters:
-
dlg - The dialog object, after it has returned from open.
Copyright (c) IBM Corporation and others 2000, 2008. All Rights Reserved.
|
|