From b84281334e9a12b86fe62d39ed2a5b80936482cb Mon Sep 17 00:00:00 2001 From: cperkonig Date: Sun, 29 Feb 2004 18:34:34 +0000 Subject: [PATCH] Added mapped path field --- .../debug/ui/launcher/PHPEnvironmentTab.java | 262 +++++++++++++------- 1 files changed, 167 insertions(+), 95 deletions(-) diff --git a/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/launcher/PHPEnvironmentTab.java b/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/launcher/PHPEnvironmentTab.java index 041a5d5..92162b0 100644 --- a/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/launcher/PHPEnvironmentTab.java +++ b/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/launcher/PHPEnvironmentTab.java @@ -9,6 +9,7 @@ import java.util.Map; import net.sourceforge.phpdt.internal.debug.ui.PHPDebugUiMessages; import net.sourceforge.phpdt.internal.debug.ui.PHPDebugUiPlugin; import net.sourceforge.phpdt.internal.debug.ui.preferences.EditInterpreterDialog; +import net.sourceforge.phpdt.internal.debug.ui.preferences.EditPathMapDialog; import net.sourceforge.phpdt.internal.launching.PHPInterpreter; import net.sourceforge.phpdt.internal.launching.PHPLaunchConfigurationAttribute; import net.sourceforge.phpdt.internal.launching.PHPRuntime; @@ -30,6 +31,8 @@ import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; @@ -51,11 +54,11 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab { protected Combo interpreterCombo; protected Button loadPathDefaultButton; protected Button fRemoteDebugCheckBox; - protected Button fFileMapRemoveButton; - protected Button fFileMapAddButton; - protected Button fFileMapEditButton; + protected Button fPathMapRemoveButton; + protected Button fPathMapAddButton; + protected Button fPathMapEditButton; protected Text fRemoteSourcePath; - protected Table fRemoteDebugFileMapTable; + protected Table fRemoteDebugPathMapTable; protected TabFolder tabFolder; private class RemoteDebugTabListener extends SelectionAdapter implements ModifyListener { @@ -72,14 +75,14 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab { */ public void widgetSelected(SelectionEvent e) { Object source= e.getSource(); - if (source == fRemoteDebugFileMapTable) { - setFileMapButtonsEnableState(); - } else if (source == fFileMapAddButton) { - handleFileMapAddButtonSelected(); - } else if (source == fFileMapEditButton) { - handleFileMapEditButtonSelected(); - } else if (source == fFileMapRemoveButton) { - handleFileMapRemoveButtonSelected(); + if (source == fRemoteDebugPathMapTable) { + setPathMapButtonsEnableState(); + } else if (source == fPathMapAddButton) { + handlePathMapAddButtonSelected(); + } else if (source == fPathMapEditButton) { + handlePathMapEditButtonSelected(); + } else if (source == fPathMapRemoveButton) { + handlePathMapRemoveButtonSelected(); } else if (source == fRemoteDebugCheckBox) { setRemoteTabEnableState(); } else { @@ -90,11 +93,12 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab { } + private static final String EMPTY_STRING = ""; //$NON-NLS-1$ private RemoteDebugTabListener fListener= new RemoteDebugTabListener(); private static final boolean DEFAULT_REMOTE_DEBUG= false; - static String [] columnTitles = { PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.FileMapTableTitle.local"), - PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.FileMapTableTitle.remote") + static String [] columnTitles = { PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.PathMapTableTitle.local"), + PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.PathMapTableTitle.remote") }; public PHPEnvironmentTab() { super(); @@ -138,41 +142,49 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab { createVerticalSpacer(comp,1); - Composite fileMapComp = new Composite(comp, SWT.NONE); + Composite pathMapComp = new Composite(comp, SWT.NONE); gd = new GridData(GridData.FILL_BOTH); - fileMapComp.setLayoutData(gd); + pathMapComp.setLayoutData(gd); GridLayout parametersLayout = new GridLayout(); parametersLayout.numColumns = 2; parametersLayout.marginHeight = 0; parametersLayout.marginWidth = 0; - fileMapComp.setLayout(parametersLayout); + pathMapComp.setLayout(parametersLayout); - Label fileMapLabel = new Label(fileMapComp, SWT.NONE); - fileMapLabel.setText(PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.FileMap.label")); + Label pathMapLabel = new Label(pathMapComp, SWT.NONE); + pathMapLabel.setText(PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.PathMap.label")); gd = new GridData(); gd.horizontalSpan = 2; - fileMapLabel.setLayoutData(gd); + pathMapLabel.setLayoutData(gd); - fRemoteDebugFileMapTable = new Table(fileMapComp, SWT.BORDER | SWT.MULTI); + fRemoteDebugPathMapTable = new Table(pathMapComp, SWT.BORDER | SWT.MULTI); TableLayout tableLayout = new TableLayout(); - fRemoteDebugFileMapTable.setLayout(tableLayout); + fRemoteDebugPathMapTable.setLayout(tableLayout); gd = new GridData(GridData.FILL_BOTH); - fRemoteDebugFileMapTable.setLayoutData(gd); - TableColumn column1 = new TableColumn(this.fRemoteDebugFileMapTable, SWT.NONE); - column1.setText(PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.FileMap.Table.Title.local")); //$NON-NLS-1$ - TableColumn column2 = new TableColumn(this.fRemoteDebugFileMapTable, SWT.NONE); - column2.setText(PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.FileMap.Table.Title.remote")); //$NON-NLS-1$ + fRemoteDebugPathMapTable.setLayoutData(gd); + TableColumn column1 = new TableColumn(this.fRemoteDebugPathMapTable, SWT.NONE); + column1.setText(PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.PathMap.Table.Title.local")); //$NON-NLS-1$ + TableColumn column2 = new TableColumn(this.fRemoteDebugPathMapTable, SWT.NONE); + column2.setText(PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.PathMap.Table.Title.remote")); //$NON-NLS-1$ tableLayout.addColumnData(new ColumnWeightData(100)); tableLayout.addColumnData(new ColumnWeightData(100)); - fRemoteDebugFileMapTable.setHeaderVisible(true); - fRemoteDebugFileMapTable.setLinesVisible(true); - fRemoteDebugFileMapTable.addSelectionListener(fListener); - fRemoteDebugFileMapTable.setEnabled(false); + fRemoteDebugPathMapTable.setHeaderVisible(true); + fRemoteDebugPathMapTable.setLinesVisible(true); + fRemoteDebugPathMapTable.addSelectionListener(fListener); + fRemoteDebugPathMapTable.addMouseListener(new MouseAdapter() { + public void mouseDoubleClick(MouseEvent e) { + setPathMapButtonsEnableState(); + if (fPathMapEditButton.isEnabled()) { + handlePathMapEditButtonSelected(); + } + } + }); +// fRemoteDebugPathMapTable.setEnabled(false); - Composite envButtonComp = new Composite(fileMapComp, SWT.NONE); + Composite envButtonComp = new Composite(pathMapComp, SWT.NONE); GridLayout envButtonLayout = new GridLayout(); envButtonLayout.marginHeight = 0; envButtonLayout.marginWidth = 0; @@ -181,37 +193,60 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab { envButtonComp.setLayoutData(gd); - fFileMapAddButton = createPushButton(envButtonComp ,PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.FileMap.Button.Add.label"), null); //$NON-NLS-1$ - fFileMapAddButton.addSelectionListener(fListener); - fFileMapAddButton.setEnabled(false); + fPathMapAddButton = createPushButton(envButtonComp ,PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.PathMap.Button.Add.label"), null); //$NON-NLS-1$ + fPathMapAddButton.addSelectionListener(fListener); +// fPathMapAddButton.setEnabled(false); - fFileMapEditButton = createPushButton(envButtonComp,PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.FileMap.Button.Edit.label"), null); //$NON-NLS-1$ - fFileMapEditButton.addSelectionListener(fListener); - fFileMapEditButton.setEnabled(false); + fPathMapEditButton = createPushButton(envButtonComp,PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.PathMap.Button.Edit.label"), null); //$NON-NLS-1$ + fPathMapEditButton.addSelectionListener(fListener); +// fPathMapEditButton.setEnabled(false); - fFileMapRemoveButton = createPushButton(envButtonComp,PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.FileMap.Button.Remove.label"), null); //$NON-NLS-1$ - fFileMapRemoveButton.addSelectionListener(fListener); - fFileMapRemoveButton.setEnabled(false); + fPathMapRemoveButton = createPushButton(envButtonComp,PHPDebugUiMessages.getString("LaunchConfigurationTab.PHPEnvironment.remoteDebugTab.PathMap.Button.Remove.label"), null); //$NON-NLS-1$ + fPathMapRemoveButton.addSelectionListener(fListener); +// fPathMapRemoveButton.setEnabled(false); } - void handleFileMapAddButtonSelected() + void handlePathMapAddButtonSelected() { - TableItem item = new TableItem (fRemoteDebugFileMapTable, SWT.NONE); - updateLaunchConfigurationDialog(); + EditPathMapDialog dialog= + new EditPathMapDialog( + getShell(), + "Edit File Map", + new String[] {EMPTY_STRING, EMPTY_STRING}); + openNewPathMapDialog(dialog,null); +// dialog.create(); +// if (dialog.open()==EditPathMapDialog.OK) +// { +// TableItem item = new TableItem (fRemoteDebugPathMapTable, SWT.NONE); +// item.setText(0,dialog.getLocalPath()); +// item.setText(1,dialog.getRemotePath()); +// updateLaunchConfigurationDialog(); +// } +// updateLaunchConfigurationDialog(); + setPathMapButtonsEnableState(); } - void handleFileMapRemoveButtonSelected() + void handlePathMapRemoveButtonSelected() { - int idx=fRemoteDebugFileMapTable.getSelectionIndex(); - if (idx !=-1) - fRemoteDebugFileMapTable.remove(idx); + int[] selectedIndices = this.fRemoteDebugPathMapTable.getSelectionIndices(); + this.fRemoteDebugPathMapTable.remove(selectedIndices); + setPathMapButtonsEnableState(); updateLaunchConfigurationDialog(); } - void handleFileMapEditButtonSelected() + void handlePathMapEditButtonSelected() { + TableItem selectedItem = this.fRemoteDebugPathMapTable.getSelection()[0]; + String local = selectedItem.getText(0); + String remote = selectedItem.getText(1); + EditPathMapDialog dialog= + new EditPathMapDialog( + getShell(), + "Edit File Map", + new String[] {local, remote}); + openNewPathMapDialog(dialog, selectedItem); } @@ -221,17 +256,16 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab { private void setRemoteTabEnableState() { boolean state=fRemoteDebugCheckBox.getSelection(); fRemoteSourcePath.setEnabled(state); - -// TODO: (cperkonig) not implemented yet -// fRemoteDebugFileMapTable.setEnabled(state); -// if (!state) -// { -// fFileMapEditButton.setEnabled(false); -// fFileMapRemoveButton.setEnabled(false); -// fFileMapAddButton.setEnabled(false); -// } else { -// setFileMapButtonsEnableState(); -// } + + fRemoteDebugPathMapTable.setEnabled(state); + if (!state) + { + fPathMapEditButton.setEnabled(false); + fPathMapRemoveButton.setEnabled(false); + fPathMapAddButton.setEnabled(false); + } else { + setPathMapButtonsEnableState(); + } updateLaunchConfigurationDialog(); } @@ -239,29 +273,67 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab { /** * Set the enabled state of the three environment variable-related buttons based on the - * selection in the FileMapTable widget. + * selection in the PathMapTable widget. */ - private void setFileMapButtonsEnableState() { + private void setPathMapButtonsEnableState() { // just do nothing for now // if(fRemoteDebugCheckBox.getSelection()) { - int selectCount = this.fRemoteDebugFileMapTable.getSelectionIndices().length; + int selectCount = this.fRemoteDebugPathMapTable.getSelectionIndices().length; if (selectCount < 1) { - fFileMapEditButton.setEnabled(false); - fFileMapRemoveButton.setEnabled(false); + fPathMapEditButton.setEnabled(false); + fPathMapRemoveButton.setEnabled(false); } else { - fFileMapRemoveButton.setEnabled(true); + fPathMapRemoveButton.setEnabled(true); if (selectCount == 1) { - fFileMapEditButton.setEnabled(true); + fPathMapEditButton.setEnabled(true); } else { - fFileMapEditButton.setEnabled(false); + fPathMapEditButton.setEnabled(false); } } - fFileMapAddButton.setEnabled(true); + fPathMapAddButton.setEnabled(true); } } + /** + * Show the specified dialog and update the pathMapTable table based on its results. + * + * @param updateItem the item to update, or null if + * adding a new item + */ + private void openNewPathMapDialog(EditPathMapDialog dialog, TableItem updateItem) { + if (dialog.open() != EditPathMapDialog.OK) { + return; + } + String[] pathPair = dialog.getPathPair(); + TableItem tableItem = updateItem; + if (tableItem == null) { + tableItem = getTableItemForName(pathPair[0]); + if (tableItem == null) { + tableItem = new TableItem(this.fRemoteDebugPathMapTable, SWT.NONE); + } + } + tableItem.setText(pathPair); + this.fRemoteDebugPathMapTable.setSelection(new TableItem[] {tableItem}); + updateLaunchConfigurationDialog(); + } + + /** + * Helper method that indicates whether the specified parameter name is already present + * in the parameters table. + */ + private TableItem getTableItemForName(String candidateName) { + TableItem[] items = this.fRemoteDebugPathMapTable.getItems(); + for (int i = 0; i < items.length; i++) { + String name = items[i].getText(0); + if (name.equals(candidateName)) { + return items[i]; + } + } + return null; + } + protected void addLoadPathTab(TabFolder tabFolder) { @@ -384,36 +456,36 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab { fRemoteSourcePath.setText(""); } - updateFileMapFromConfig(configuration); + updatePathMapFromConfig(configuration); } - private void updateFileMapFromConfig(ILaunchConfiguration config) { - Map envVars = null; - try { - if (config != null) { - envVars = config.getAttribute(PHPLaunchConfigurationAttribute.FILE_MAP, (Map)null); - } - updateFileMapTable(envVars, this.fRemoteDebugFileMapTable); - setFileMapButtonsEnableState(); - } catch (CoreException ce) { - log(ce); + private void updatePathMapFromConfig(ILaunchConfiguration config) { + Map envVars = null; + try { + if (config != null) { + envVars = config.getAttribute(PHPLaunchConfigurationAttribute.FILE_MAP, (Map)null); } + updatePathMapTable(envVars, this.fRemoteDebugPathMapTable); + setPathMapButtonsEnableState(); + } catch (CoreException ce) { + log(ce); } + } - private void updateFileMapTable(Map map, Table tableWidget) { - tableWidget.removeAll(); - if (map == null) { - return; - } - Iterator iterator = map.keySet().iterator(); - while (iterator.hasNext()) { - String key = (String) iterator.next(); - String value = (String) map.get(key); - TableItem tableItem = new TableItem(tableWidget, SWT.NONE); - tableItem.setText(new String[] {key, value}); - } + private void updatePathMapTable(Map map, Table tableWidget) { + tableWidget.removeAll(); + if (map == null) { + return; + } + Iterator iterator = map.keySet().iterator(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + String value = (String) map.get(key); + TableItem tableItem = new TableItem(tableWidget, SWT.NONE); + tableItem.setText(new String[] {key, value}); } + } protected void initializeLoadPath(ILaunchConfiguration configuration) { boolean useDefaultLoadPath = true; @@ -485,7 +557,7 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab { } configuration.setAttribute(PHPLaunchConfigurationAttribute.REMOTE_DEBUG, fRemoteDebugCheckBox.getSelection()); - configuration.setAttribute(PHPLaunchConfigurationAttribute.FILE_MAP, getMapFromFileMapTable()); + configuration.setAttribute(PHPLaunchConfigurationAttribute.FILE_MAP, getMapFromPathMapTable()); configuration.setAttribute(PHPLaunchConfigurationAttribute.REMOTE_PATH, fRemoteSourcePath.getText()); } @@ -500,8 +572,8 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab { return composite; } - private Map getMapFromFileMapTable() { - TableItem[] items = fRemoteDebugFileMapTable.getItems(); + private Map getMapFromPathMapTable() { + TableItem[] items = fRemoteDebugPathMapTable.getItems(); if (items.length == 0) { return null; } -- 1.7.1