X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/preferences/PHPInterpreterPreferencePage.java b/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/preferences/PHPInterpreterPreferencePage.java index 689b864..84a4f31 100644 --- a/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/preferences/PHPInterpreterPreferencePage.java +++ b/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/preferences/PHPInterpreterPreferencePage.java @@ -34,219 +34,232 @@ import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; -public class PHPInterpreterPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { - protected CheckboxTableViewer tableViewer; - - protected Button addButton, editButton, removeButton; - - public PHPInterpreterPreferencePage() { - super(); - } - - public void init(IWorkbench workbench) { - } - - protected Control createContents(Composite parent) { - noDefaultAndApplyButton(); - - Composite composite = createPageRoot(parent); - Table table = createInstalledInterpretersTable(composite); - createInstalledInterpretersTableViewer(table); - createButtonGroup(composite); - - tableViewer.setInput(PHPRuntime.getDefault().getInstalledInterpreters()); - PHPInterpreter selectedInterpreter = PHPRuntime.getDefault().getSelectedInterpreter(); - if (selectedInterpreter != null) - tableViewer.setChecked(selectedInterpreter, true); - - enableButtons(); - - return composite; - } - - protected void createButtonGroup(Composite composite) { - Composite buttons = new Composite(composite, SWT.NULL); - buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - GridLayout layout = new GridLayout(); - layout.marginHeight = 0; - layout.marginWidth = 0; - buttons.setLayout(layout); - - addButton = new Button(buttons, SWT.PUSH); - addButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - addButton.setText(PHPDebugUiMessages.getString("PHPInterpreterPreferencePage.addButton.label")); //$NON-NLS-1$ - addButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event evt) { - addInterpreter(); - } - }); - - editButton = new Button(buttons, SWT.PUSH); - editButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - editButton.setText(PHPDebugUiMessages.getString("PHPInterpreterPreferencePage.editButton.label")); //$NON-NLS-1$ - editButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event evt) { - editInterpreter(); - } - }); - - removeButton = new Button(buttons, SWT.PUSH); - removeButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - removeButton.setText(PHPDebugUiMessages.getString("PHPInterpreterPreferencePage.removeButton.label")); //$NON-NLS-1$ - removeButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event evt) { - removeInterpreter(); - } - }); - } - - protected void createInstalledInterpretersTableViewer(Table table) { - tableViewer = new CheckboxTableViewer(table); - - tableViewer.setLabelProvider(new PHPInterpreterLabelProvider()); - tableViewer.setContentProvider(new PHPInterpreterContentProvider()); - - tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent evt) { - enableButtons(); - } - }); - - tableViewer.addCheckStateListener(new ICheckStateListener() { - public void checkStateChanged(CheckStateChangedEvent event) { - updateSelectedInterpreter(event.getElement()); - } - }); - - tableViewer.addDoubleClickListener(new IDoubleClickListener() { - public void doubleClick(DoubleClickEvent e) { - editInterpreter(); - } - }); - } - - protected Table createInstalledInterpretersTable(Composite composite) { - Table table = new Table(composite, SWT.CHECK | SWT.BORDER | SWT.FULL_SELECTION); - - GridData data = new GridData(GridData.FILL_BOTH); - data.widthHint = convertWidthInCharsToPixels(80); - data.heightHint = convertHeightInCharsToPixels(10); - table.setLayoutData(data); - table.setHeaderVisible(true); - table.setLinesVisible(false); - - TableColumn column = new TableColumn(table, SWT.NULL); - column.setText(PHPDebugUiMessages.getString("PHPInterpreterPreferencePage.PHPInterpreterTable.interpreterPath")); //$NON-NLS-1$ - column.setWidth(400); - - // column = new TableColumn(table, SWT.NULL); - // column.setText(PHPDebugUiMessages.getString("PHPInterpreterPreferencePage.PHPInterpreterTable.interpreterPath")); - // //$NON-NLS-1$ - // column.setWidth(350); - - return table; - } - - protected Composite createPageRoot(Composite parent) { - Composite composite = new Composite(parent, SWT.NULL); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - composite.setLayout(layout); - return composite; - } - - protected void addInterpreter() { - PHPInterpreter newInterpreter = new PHPInterpreter(null); - File phpRuntime = getFile(getShell(), null); - if (phpRuntime != null) { - newInterpreter.setInstallLocation(phpRuntime); - tableViewer.add(newInterpreter); - } - } - - protected void removeInterpreter() { - tableViewer.remove(getSelectedInterpreter()); - } - - protected void enableButtons() { - if (getSelectedInterpreter() != null) { - editButton.setEnabled(true); - removeButton.setEnabled(true); - } else { - editButton.setEnabled(false); - removeButton.setEnabled(false); - } - } - - protected void updateSelectedInterpreter(Object interpreter) { - Object[] checkedElements = tableViewer.getCheckedElements(); - for (int i = 0; i < checkedElements.length; i++) { - tableViewer.setChecked(checkedElements[i], false); - } - - tableViewer.setChecked(interpreter, true); - } - - protected void editInterpreter() { - PHPInterpreter anInterpreter = getSelectedInterpreter(); - File phpRuntime = anInterpreter.getInstallLocation(); - if (phpRuntime != null) { - File parent = phpRuntime.getParentFile(); - phpRuntime = getFile(getShell(), parent); - } else { - phpRuntime = getFile(getShell(), null); - } - if (phpRuntime != null) { - anInterpreter.setInstallLocation(phpRuntime); - tableViewer.update(anInterpreter, null); - } - - } - - protected PHPInterpreter getSelectedInterpreter() { - IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection(); - return (PHPInterpreter) selection.getFirstElement(); - } - - public boolean performOk() { - TableItem[] tableItems = tableViewer.getTable().getItems(); - List installedInterpreters = new ArrayList(tableItems.length); - for (int i = 0; i < tableItems.length; i++) - installedInterpreters.add(tableItems[i].getData()); - PHPRuntime.getDefault().setInstalledInterpreters(installedInterpreters); - - Object[] checkedElements = tableViewer.getCheckedElements(); - if (checkedElements.length > 0) - PHPRuntime.getDefault().setSelectedInterpreter((PHPInterpreter) checkedElements[0]); - - return super.performOk(); - } - - /** - * Helper to open the file chooser dialog. - * - * @param startingDirectory - * the directory to open the dialog on. - * @return File The File the user selected or null if they do not. - */ - public static File getFile(Shell shell, File startingDirectory) { - - FileDialog dialog = new FileDialog(shell, SWT.OPEN); - if (startingDirectory != null) { - dialog.setFileName(startingDirectory.getPath()); - } - String operatingSystem = Platform.getOS(); - if (operatingSystem.equals(Platform.OS_WIN32)) { - String[] extensions = { "*.exe" }; - dialog.setFilterExtensions(extensions); - } - String file = dialog.open(); - if (file != null) { - file = file.trim(); - if (file.length() > 0) - return new File(file); - } - - return null; - } +public class PHPInterpreterPreferencePage extends PreferencePage implements + IWorkbenchPreferencePage { + protected CheckboxTableViewer tableViewer; + + protected Button addButton, editButton, removeButton; + + public PHPInterpreterPreferencePage() { + super(); + } + + public void init(IWorkbench workbench) { + } + + protected Control createContents(Composite parent) { + noDefaultAndApplyButton(); + + Composite composite = createPageRoot(parent); + Table table = createInstalledInterpretersTable(composite); + createInstalledInterpretersTableViewer(table); + createButtonGroup(composite); + + tableViewer + .setInput(PHPRuntime.getDefault().getInstalledInterpreters()); + PHPInterpreter selectedInterpreter = PHPRuntime.getDefault() + .getSelectedInterpreter(); + if (selectedInterpreter != null) + tableViewer.setChecked(selectedInterpreter, true); + + enableButtons(); + + return composite; + } + + protected void createButtonGroup(Composite composite) { + Composite buttons = new Composite(composite, SWT.NULL); + buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + GridLayout layout = new GridLayout(); + layout.marginHeight = 0; + layout.marginWidth = 0; + buttons.setLayout(layout); + + addButton = new Button(buttons, SWT.PUSH); + addButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + addButton.setText(PHPDebugUiMessages + .getString("PHPInterpreterPreferencePage.addButton.label")); //$NON-NLS-1$ + addButton.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event evt) { + addInterpreter(); + } + }); + + editButton = new Button(buttons, SWT.PUSH); + editButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + editButton.setText(PHPDebugUiMessages + .getString("PHPInterpreterPreferencePage.editButton.label")); //$NON-NLS-1$ + editButton.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event evt) { + editInterpreter(); + } + }); + + removeButton = new Button(buttons, SWT.PUSH); + removeButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + removeButton.setText(PHPDebugUiMessages + .getString("PHPInterpreterPreferencePage.removeButton.label")); //$NON-NLS-1$ + removeButton.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event evt) { + removeInterpreter(); + } + }); + } + + protected void createInstalledInterpretersTableViewer(Table table) { + tableViewer = new CheckboxTableViewer(table); + + tableViewer.setLabelProvider(new PHPInterpreterLabelProvider()); + tableViewer.setContentProvider(new PHPInterpreterContentProvider()); + + tableViewer + .addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent evt) { + enableButtons(); + } + }); + + tableViewer.addCheckStateListener(new ICheckStateListener() { + public void checkStateChanged(CheckStateChangedEvent event) { + updateSelectedInterpreter(event.getElement()); + } + }); + + tableViewer.addDoubleClickListener(new IDoubleClickListener() { + public void doubleClick(DoubleClickEvent e) { + editInterpreter(); + } + }); + } + + protected Table createInstalledInterpretersTable(Composite composite) { + Table table = new Table(composite, SWT.CHECK | SWT.BORDER + | SWT.FULL_SELECTION); + + GridData data = new GridData(GridData.FILL_BOTH); + data.widthHint = convertWidthInCharsToPixels(80); + data.heightHint = convertHeightInCharsToPixels(10); + table.setLayoutData(data); + table.setHeaderVisible(true); + table.setLinesVisible(false); + + TableColumn column = new TableColumn(table, SWT.NULL); + column + .setText(PHPDebugUiMessages + .getString("PHPInterpreterPreferencePage.PHPInterpreterTable.interpreterPath")); //$NON-NLS-1$ + column.setWidth(400); + + // column = new TableColumn(table, SWT.NULL); + // column.setText(PHPDebugUiMessages.getString("PHPInterpreterPreferencePage.PHPInterpreterTable.interpreterPath")); + // //$NON-NLS-1$ + // column.setWidth(350); + + return table; + } + + protected Composite createPageRoot(Composite parent) { + Composite composite = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + composite.setLayout(layout); + return composite; + } + + protected void addInterpreter() { + PHPInterpreter newInterpreter = new PHPInterpreter(null); + File phpRuntime = getFile(getShell(), null); + if (phpRuntime != null) { + newInterpreter.setInstallLocation(phpRuntime); + tableViewer.add(newInterpreter); + } + } + + protected void removeInterpreter() { + tableViewer.remove(getSelectedInterpreter()); + } + + protected void enableButtons() { + if (getSelectedInterpreter() != null) { + editButton.setEnabled(true); + removeButton.setEnabled(true); + } else { + editButton.setEnabled(false); + removeButton.setEnabled(false); + } + } + + protected void updateSelectedInterpreter(Object interpreter) { + Object[] checkedElements = tableViewer.getCheckedElements(); + for (int i = 0; i < checkedElements.length; i++) { + tableViewer.setChecked(checkedElements[i], false); + } + + tableViewer.setChecked(interpreter, true); + } + + protected void editInterpreter() { + PHPInterpreter anInterpreter = getSelectedInterpreter(); + File phpRuntime = anInterpreter.getInstallLocation(); + if (phpRuntime != null) { + File parent = phpRuntime.getParentFile(); + phpRuntime = getFile(getShell(), parent); + } else { + phpRuntime = getFile(getShell(), null); + } + if (phpRuntime != null) { + anInterpreter.setInstallLocation(phpRuntime); + tableViewer.update(anInterpreter, null); + } + + } + + protected PHPInterpreter getSelectedInterpreter() { + IStructuredSelection selection = (IStructuredSelection) tableViewer + .getSelection(); + return (PHPInterpreter) selection.getFirstElement(); + } + + public boolean performOk() { + TableItem[] tableItems = tableViewer.getTable().getItems(); + List installedInterpreters = new ArrayList(tableItems.length); + for (int i = 0; i < tableItems.length; i++) + installedInterpreters.add(tableItems[i].getData()); + PHPRuntime.getDefault().setInstalledInterpreters(installedInterpreters); + + Object[] checkedElements = tableViewer.getCheckedElements(); + if (checkedElements.length > 0) + PHPRuntime.getDefault().setSelectedInterpreter( + (PHPInterpreter) checkedElements[0]); + + return super.performOk(); + } + + /** + * Helper to open the file chooser dialog. + * + * @param startingDirectory + * the directory to open the dialog on. + * @return File The File the user selected or null if they do + * not. + */ + public static File getFile(Shell shell, File startingDirectory) { + + FileDialog dialog = new FileDialog(shell, SWT.OPEN); + if (startingDirectory != null) { + dialog.setFileName(startingDirectory.getPath()); + } + String operatingSystem = Platform.getOS(); + if (operatingSystem.equals(Platform.OS_WIN32)) { + String[] extensions = { "*.exe" }; + dialog.setFilterExtensions(extensions); + } + String file = dialog.open(); + if (file != null) { + file = file.trim(); + if (file.length() > 0) + return new File(file); + } + + return null; + } } \ No newline at end of file