diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/dialogs/SystemRemoteFileDialog.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/dialogs/SystemRemoteFileDialog.java index c63a113182c..66dff08b27b 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/dialogs/SystemRemoteFileDialog.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/dialogs/SystemRemoteFileDialog.java @@ -11,15 +11,23 @@ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. * * Contributors: + * Kevin Doyle (IBM) - Added Double Click Listener that closes dialog on file double click * {Name} (company) - description of contribution. ********************************************************************************/ package org.eclipse.rse.files.ui.dialogs; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.internal.subsystems.files.core.SystemFileResources; import org.eclipse.rse.internal.ui.view.SystemActionViewerFilter; +import org.eclipse.rse.internal.ui.view.SystemView; +import org.eclipse.rse.ui.dialogs.SystemPromptDialog; import org.eclipse.rse.ui.dialogs.SystemRemoteResourceDialog; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; @@ -55,4 +63,40 @@ public class SystemRemoteFileDialog extends SystemRemoteResourceDialog { return null; } + + /** + * Override of parent. + */ + protected Control createContents(Composite parent) + { + Control control = super.createContents(parent); + _form.getSystemViewForm().getSystemView().addDoubleClickListener(new IDoubleClickListener() { + public void doubleClick(DoubleClickEvent event) { + handleDoubleClick(event); + } + }); + return control; + } + + /** + * Handles double clicks in viewer. + * Closes the dialog if a file is double clicked + */ + protected void handleDoubleClick(DoubleClickEvent event) + { + SystemView tree = _form.getSystemViewForm().getSystemView(); + IStructuredSelection s = (IStructuredSelection) event.getSelection(); + Object element = s.getFirstElement(); + if (element == null) + return; + if (_form.isPageComplete() && !tree.isExpandable(element)) + { + setReturnCode(OK); + if (processOK()) + { + okPressed = true; + close(); + } + } + } } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/dialogs/SystemSelectRemoteFileOrFolderDialog.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/dialogs/SystemSelectRemoteFileOrFolderDialog.java index 721209ac6c3..3a7c2424926 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/dialogs/SystemSelectRemoteFileOrFolderDialog.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/dialogs/SystemSelectRemoteFileOrFolderDialog.java @@ -11,10 +11,14 @@ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. * * Contributors: + * Kevin Doyle (IBM) - Added a double click listener that closes the dialog if appropriate * Martin Oberhuber (Wind River) - [184095] Replace systemTypeName by IRSESystemType ********************************************************************************/ package org.eclipse.rse.files.ui.dialogs; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.rse.core.IRSESystemType; import org.eclipse.rse.core.model.IHost; @@ -22,6 +26,7 @@ import org.eclipse.rse.files.ui.ISystemAddFileListener; import org.eclipse.rse.files.ui.widgets.SystemSelectRemoteFileOrFolderForm; import org.eclipse.rse.internal.subsystems.files.core.SystemFileResources; import org.eclipse.rse.internal.ui.SystemResources; +import org.eclipse.rse.internal.ui.view.SystemView; import org.eclipse.rse.internal.ui.view.SystemViewForm; import org.eclipse.rse.services.clientserver.messages.SystemMessage; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; @@ -404,6 +409,43 @@ public class SystemSelectRemoteFileOrFolderDialog // ------------------ // PRIVATE METHODS... // ------------------ + /** + * Private method. + * @see SystemPromptDialog#createContents(Composite) + */ + protected Control createContents(Composite parent) + { + Control control = super.createContents(parent); + form.getSystemViewForm().getSystemView().addDoubleClickListener(new IDoubleClickListener() { + public void doubleClick(DoubleClickEvent event) { + handleDoubleClick(event); + } + }); + return control; + } + + /** + * Handles double clicks in viewer. + * Closes the dialog if a file is double clicked + */ + protected void handleDoubleClick(DoubleClickEvent event) + { + SystemView tree = form.getSystemViewForm().getSystemView(); + IStructuredSelection s = (IStructuredSelection) event.getSelection(); + Object element = s.getFirstElement(); + if (element == null) + return; + if (FILE_MODE && form.isPageComplete() && !tree.isExpandable(element)) + { + setReturnCode(OK); + if (processOK()) + { + okPressed = true; + close(); + } + } + } + /** * Private method. * @see SystemPromptDialog#getInitialFocusControl() diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemResourceSelectionForm.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemResourceSelectionForm.java index 94becbd8154..c2d1e611a17 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemResourceSelectionForm.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemResourceSelectionForm.java @@ -11,6 +11,7 @@ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. * * Contributors: + * Kevin Doyle (IBM) - Added getSystemViewForm() * Martin Oberhuber (Wind River) - [184095] Replace systemTypeName by IRSESystemType ********************************************************************************/ @@ -131,6 +132,15 @@ public class SystemResourceSelectionForm implements ISelectionChangedListener return outputObjects; } + /** + * Return the embedded System Tree object. + * Will be null until createControls is called. + */ + public SystemViewForm getSystemViewForm() + { + return _systemViewForm; + } + public void createControls(Composite parent) { _container = SystemWidgetHelpers.createComposite(parent, showPropertySheet ? 2 : 1); diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemRemoteResourceDialog.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemRemoteResourceDialog.java index c1d94e76e25..3f949b9917d 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemRemoteResourceDialog.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemRemoteResourceDialog.java @@ -30,7 +30,7 @@ import org.eclipse.swt.widgets.Shell; public abstract class SystemRemoteResourceDialog extends SystemPromptDialog { - private SystemResourceSelectionForm _form; + protected SystemResourceSelectionForm _form; private SystemResourceSelectionInputProvider _inputProvider; private Object _preSelection; private IValidatorRemoteSelection _selectionValidator;