X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/CodeFormatterPreferencePage.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/CodeFormatterPreferencePage.java deleted file mode 100644 index e08920c..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/CodeFormatterPreferencePage.java +++ /dev/null @@ -1,557 +0,0 @@ -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ -package net.sourceforge.phpdt.internal.ui.preferences; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Hashtable; - -import net.sourceforge.phpdt.core.ICodeFormatter; -import net.sourceforge.phpdt.core.JavaCore; -import net.sourceforge.phpdt.core.ToolFactory; -import net.sourceforge.phpdt.internal.ui.PHPUIMessages; -import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo; -import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil; -import net.sourceforge.phpdt.internal.ui.util.TabFolderLayout; -import net.sourceforge.phpeclipse.PHPeclipsePlugin; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.preference.PreferencePage; -import org.eclipse.jface.text.Document; -import org.eclipse.jface.text.IDocument; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.TabFolder; -import org.eclipse.swt.widgets.TabItem; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPreferencePage; - -/* - * The page for setting code formatter options - */ -public class CodeFormatterPreferencePage extends PreferencePage implements - IWorkbenchPreferencePage { - - // Preference store keys, see PHPCore.getOptions - private static final String PREF_NEWLINE_OPENING_BRACES = JavaCore.FORMATTER_NEWLINE_OPENING_BRACE; - - private static final String PREF_NEWLINE_CONTROL_STATEMENT = JavaCore.FORMATTER_NEWLINE_CONTROL; - - private static final String PREF_NEWLINE_CLEAR_ALL = JavaCore.FORMATTER_CLEAR_BLANK_LINES; - - // private static final String PREF_NEWLINE_ELSE_IF= - // PHPCore.FORMATTER_NEWLINE_ELSE_IF; - private static final String PREF_NEWLINE_EMPTY_BLOCK = JavaCore.FORMATTER_NEWLINE_EMPTY_BLOCK; - - private static final String PREF_LINE_SPLIT = JavaCore.FORMATTER_LINE_SPLIT; - - private static final String PREF_STYLE_COMPACT_ASSIGNEMENT = JavaCore.FORMATTER_COMPACT_ASSIGNMENT; - - private static final String PREF_STYLE_COMPACT_STRING_CONCATENATION = JavaCore.FORMATTER_COMPACT_STRING_CONCATENATION; - - private static final String PREF_STYLE_COMPACT_ARRAYS = JavaCore.FORMATTER_COMPACT_ARRAYS; - - private static final String PREF_TAB_CHAR = JavaCore.FORMATTER_TAB_CHAR; - - private static final String PREF_TAB_SIZE = JavaCore.FORMATTER_TAB_SIZE; - - // values - private static final String INSERT = JavaCore.INSERT; - - private static final String DO_NOT_INSERT = JavaCore.DO_NOT_INSERT; - - private static final String COMPACT = JavaCore.COMPACT; - - private static final String NORMAL = JavaCore.NORMAL; - - private static final String TAB = JavaCore.TAB; - - private static final String SPACE = JavaCore.SPACE; - - private static final String CLEAR_ALL = JavaCore.CLEAR_ALL; - - private static final String PRESERVE_ONE = JavaCore.PRESERVE_ONE; - - private static String[] getAllKeys() { - return new String[] { PREF_NEWLINE_OPENING_BRACES, - PREF_NEWLINE_CONTROL_STATEMENT, PREF_NEWLINE_CLEAR_ALL, - // PREF_NEWLINE_ELSE_IF, - PREF_NEWLINE_EMPTY_BLOCK, PREF_LINE_SPLIT, - PREF_STYLE_COMPACT_ASSIGNEMENT, PREF_STYLE_COMPACT_STRING_CONCATENATION, - PREF_STYLE_COMPACT_ARRAYS, - PREF_TAB_CHAR, PREF_TAB_SIZE }; - } - - /** - * Gets the currently configured tab size - * - * @deprecated Inline to avoid reference to preference page - */ - public static int getTabSize() { - String string = (String) JavaCore.getOptions().get(PREF_TAB_SIZE); - return getPositiveIntValue(string, 4); - } - - /** - * Gets the current compating assignement configuration - * - * @deprecated Inline to avoid reference to preference page - */ - public static boolean isCompactingAssignment() { - return COMPACT.equals(JavaCore.getOptions().get( - PREF_STYLE_COMPACT_ASSIGNEMENT)); - } - - /** - * Gets the current compating assignement configuration - * - * @deprecated Inline to avoid reference to preference page - */ - public static boolean useSpaces() { - return SPACE.equals(JavaCore.getOptions().get(PREF_TAB_CHAR)); - } - - private static int getPositiveIntValue(String string, int dflt) { - try { - int i = Integer.parseInt(string); - if (i >= 0) { - return i; - } - } catch (NumberFormatException e) { - } - return dflt; - } - - private static class ControlData { - private String fKey; - - private String[] fValues; - - public ControlData(String key, String[] values) { - fKey = key; - fValues = values; - } - - public String getKey() { - return fKey; - } - - public String getValue(boolean selection) { - int index = selection ? 0 : 1; - return fValues[index]; - } - - public String getValue(int index) { - return fValues[index]; - } - - public int getSelection(String value) { - for (int i = 0; i < fValues.length; i++) { - if (value.equals(fValues[i])) { - return i; - } - } - throw new IllegalArgumentException(); - } - } - - private Hashtable fWorkingValues; - - private ArrayList fCheckBoxes; - - private ArrayList fTextBoxes; - - private SelectionListener fButtonSelectionListener; - - private ModifyListener fTextModifyListener; - - private String fPreviewText; - - private IDocument fPreviewDocument; - - private Text fTabSizeTextBox; - - // private SourceViewer fSourceViewer; - - public CodeFormatterPreferencePage() { - setPreferenceStore(PHPeclipsePlugin.getDefault().getPreferenceStore()); - setDescription(PHPUIMessages - .getString("CodeFormatterPreferencePage.description")); //$NON-NLS-1$ - - fWorkingValues = JavaCore.getOptions(); - fCheckBoxes = new ArrayList(); - fTextBoxes = new ArrayList(); - - fButtonSelectionListener = new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - - public void widgetSelected(SelectionEvent e) { - if (!e.widget.isDisposed()) { - controlChanged((Button) e.widget); - } - } - }; - - fTextModifyListener = new ModifyListener() { - public void modifyText(ModifyEvent e) { - if (!e.widget.isDisposed()) { - textChanged((Text) e.widget); - } - } - }; - - fPreviewDocument = new Document(); - fPreviewText = loadPreviewFile("CodeFormatterPreviewCode.txt"); //$NON-NLS-1$ - } - - /* - * @see IWorkbenchPreferencePage#init() - */ - public void init(IWorkbench workbench) { - } - - /* - * @see PreferencePage#createControl(Composite) - */ - public void createControl(Composite parent) { - super.createControl(parent); - // WorkbenchHelp.setHelp(getControl(), - // IJavaHelpContextIds.CODEFORMATTER_PREFERENCE_PAGE); - } - - /* - * @see PreferencePage#createContents(Composite) - */ - protected Control createContents(Composite parent) { - - GridLayout layout = new GridLayout(); - layout.marginHeight = 0; - layout.marginWidth = 0; - - Composite composite = new Composite(parent, SWT.NONE); - composite.setLayout(layout); - - TabFolder folder = new TabFolder(composite, SWT.NONE); - folder.setLayout(new TabFolderLayout()); - folder.setLayoutData(new GridData(GridData.FILL_BOTH)); - - String[] insertNotInsert = new String[] { INSERT, DO_NOT_INSERT }; - - layout = new GridLayout(); - layout.numColumns = 2; - - Composite newlineComposite = new Composite(folder, SWT.NULL); - newlineComposite.setLayout(layout); - - String label = PHPUIMessages - .getString("CodeFormatterPreferencePage.newline_opening_braces.label"); //$NON-NLS-1$ - addCheckBox(newlineComposite, label, PREF_NEWLINE_OPENING_BRACES, - insertNotInsert); - - label = PHPUIMessages - .getString("CodeFormatterPreferencePage.newline_control_statement.label"); //$NON-NLS-1$ - addCheckBox(newlineComposite, label, PREF_NEWLINE_CONTROL_STATEMENT, - insertNotInsert); - - label = PHPUIMessages - .getString("CodeFormatterPreferencePage.newline_clear_lines"); //$NON-NLS-1$ - addCheckBox(newlineComposite, label, PREF_NEWLINE_CLEAR_ALL, - new String[] { CLEAR_ALL, PRESERVE_ONE }); - - // label= - // PHPUIMessages.getString("CodeFormatterPreferencePage.newline_else_if.label"); - // //$NON-NLS-1$ - // addCheckBox(newlineComposite, label, PREF_NEWLINE_ELSE_IF, - // insertNotInsert); - - label = PHPUIMessages - .getString("CodeFormatterPreferencePage.newline_empty_block.label"); //$NON-NLS-1$ - addCheckBox(newlineComposite, label, PREF_NEWLINE_EMPTY_BLOCK, - insertNotInsert); - - layout = new GridLayout(); - layout.numColumns = 2; - - Composite lineSplittingComposite = new Composite(folder, SWT.NULL); - lineSplittingComposite.setLayout(layout); - - label = PHPUIMessages - .getString("CodeFormatterPreferencePage.split_line.label"); //$NON-NLS-1$ - addTextField(lineSplittingComposite, label, PREF_LINE_SPLIT); - - layout = new GridLayout(); - layout.numColumns = 2; - - Composite styleComposite = new Composite(folder, SWT.NULL); - styleComposite.setLayout(layout); - - label = PHPUIMessages - .getString("CodeFormatterPreferencePage.style_compact_assignement.label"); //$NON-NLS-1$ - addCheckBox(styleComposite, label, PREF_STYLE_COMPACT_ASSIGNEMENT, - new String[] { COMPACT, NORMAL }); - - label = PHPUIMessages - .getString("CodeFormatterPreferencePage.style_compact_string_concatenation.label"); //$NON-NLS-1$ - addCheckBox(styleComposite, label, PREF_STYLE_COMPACT_STRING_CONCATENATION, - new String[] { COMPACT, NORMAL }); - - label = PHPUIMessages - .getString("CodeFormatterPreferencePage.style_compact_arrays.label"); //$NON-NLS-1$ - addCheckBox(styleComposite, label, PREF_STYLE_COMPACT_ARRAYS, - new String[] { COMPACT, NORMAL }); - - label = PHPUIMessages - .getString("CodeFormatterPreferencePage.tab_char.label"); //$NON-NLS-1$ - addCheckBox(styleComposite, label, PREF_TAB_CHAR, new String[] { TAB, - SPACE }); - - label = PHPUIMessages - .getString("CodeFormatterPreferencePage.tab_size.label"); //$NON-NLS-1$ - fTabSizeTextBox = addTextField(styleComposite, label, PREF_TAB_SIZE); - - TabItem item = new TabItem(folder, SWT.NONE); - item.setText(PHPUIMessages - .getString("CodeFormatterPreferencePage.tab.newline.tabtitle")); //$NON-NLS-1$ - item.setControl(newlineComposite); - - item = new TabItem(folder, SWT.NONE); - item - .setText(PHPUIMessages - .getString("CodeFormatterPreferencePage.tab.linesplit.tabtitle")); //$NON-NLS-1$ - item.setControl(lineSplittingComposite); - - item = new TabItem(folder, SWT.NONE); - item.setText(PHPUIMessages - .getString("CodeFormatterPreferencePage.tab.style.tabtitle")); //$NON-NLS-1$ - item.setControl(styleComposite); - - // fSourceViewer= createPreview(parent); - - updatePreview(); - - return composite; - } - - // private SourceViewer createPreview(Composite parent) { - // SourceViewer previewViewer= new SourceViewer(parent, null, SWT.V_SCROLL | - // SWT.H_SCROLL | SWT.BORDER); - // JavaTextTools tools= JavaPlugin.getDefault().getJavaTextTools(); - // previewViewer.configure(new PHPSourceViewerConfiguration(tools, null)); - // previewViewer.getTextWidget().setFont(JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT)); - // previewViewer.getTextWidget().setTabs(getPositiveIntValue((String) - // fWorkingValues.get(PREF_TAB_SIZE), 0)); - // previewViewer.setEditable(false); - // previewViewer.setDocument(fPreviewDocument); - // Control control= previewViewer.getControl(); - // GridData gdata= new GridData(GridData.FILL_BOTH); - // gdata.widthHint= convertWidthInCharsToPixels(30); - // gdata.heightHint= convertHeightInCharsToPixels(5); - // control.setLayoutData(gdata); - // return previewViewer; - // } - - private Button addCheckBox(Composite parent, String label, String key, - String[] values) { - ControlData data = new ControlData(key, values); - - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalSpan = 2; - - Button checkBox = new Button(parent, SWT.CHECK); - checkBox.setText(label); - checkBox.setData(data); - checkBox.setLayoutData(gd); - - String currValue = (String) fWorkingValues.get(key); - checkBox.setSelection(data.getSelection(currValue) == 0); - checkBox.addSelectionListener(fButtonSelectionListener); - - fCheckBoxes.add(checkBox); - return checkBox; - } - - private Text addTextField(Composite parent, String label, String key) { - Label labelControl = new Label(parent, SWT.NONE); - labelControl.setText(label); - labelControl.setLayoutData(new GridData()); - - Text textBox = new Text(parent, SWT.BORDER | SWT.SINGLE); - textBox.setData(key); - textBox.setLayoutData(new GridData()); - - String currValue = (String) fWorkingValues.get(key); - textBox.setText(String.valueOf(getPositiveIntValue(currValue, 1))); - textBox.setTextLimit(3); - textBox.addModifyListener(fTextModifyListener); - - GridData gd = new GridData(); - gd.widthHint = convertWidthInCharsToPixels(5); - textBox.setLayoutData(gd); - - fTextBoxes.add(textBox); - return textBox; - } - - private void controlChanged(Button button) { - ControlData data = (ControlData) button.getData(); - boolean selection = button.getSelection(); - String newValue = data.getValue(selection); - fWorkingValues.put(data.getKey(), newValue); - updatePreview(); - - if (PREF_TAB_CHAR.equals(data.getKey())) { - updateStatus(new StatusInfo()); - if (selection) { - fTabSizeTextBox.setText((String) fWorkingValues - .get(PREF_TAB_SIZE)); - } - } - } - - private void textChanged(Text textControl) { - String key = (String) textControl.getData(); - String number = textControl.getText(); - IStatus status = validatePositiveNumber(number); - if (!status.matches(IStatus.ERROR)) { - fWorkingValues.put(key, number); - } - // if (PREF_TAB_SIZE.equals(key)) { - // fSourceViewer.getTextWidget().setTabs(getPositiveIntValue(number, - // 0)); - // } - updateStatus(status); - updatePreview(); - } - - /* - * @see IPreferencePage#performOk() - */ - public boolean performOk() { - String[] allKeys = getAllKeys(); - // preserve other options - // store in JCore - Hashtable actualOptions = JavaCore.getOptions(); - for (int i = 0; i < allKeys.length; i++) { - String key = allKeys[i]; - String val = (String) fWorkingValues.get(key); - actualOptions.put(key, val); - } - JavaCore.setOptions(actualOptions); - PHPeclipsePlugin.getDefault().savePluginPreferences(); - return super.performOk(); - } - - /* - * @see PreferencePage#performDefaults() - */ - protected void performDefaults() { - fWorkingValues = JavaCore.getDefaultOptions(); - updateControls(); - super.performDefaults(); - } - - private String loadPreviewFile(String filename) { - String separator = System.getProperty("line.separator"); //$NON-NLS-1$ - StringBuffer btxt = new StringBuffer(512); - BufferedReader rin = null; - try { - rin = new BufferedReader(new InputStreamReader(getClass() - .getResourceAsStream(filename))); - String line; - while ((line = rin.readLine()) != null) { - btxt.append(line); - btxt.append(separator); - } - } catch (IOException io) { - PHPeclipsePlugin.log(io); - } finally { - if (rin != null) { - try { - rin.close(); - } catch (IOException e) { - } - } - } - return btxt.toString(); - } - - private void updatePreview() { - ICodeFormatter formatter = ToolFactory - .createDefaultCodeFormatter(fWorkingValues); - fPreviewDocument.set(formatter.format(fPreviewText, 0, null, "\n")); //$NON-NLS-1$ - } - - private void updateControls() { - // update the UI - for (int i = fCheckBoxes.size() - 1; i >= 0; i--) { - Button curr = (Button) fCheckBoxes.get(i); - ControlData data = (ControlData) curr.getData(); - - String currValue = (String) fWorkingValues.get(data.getKey()); - curr.setSelection(data.getSelection(currValue) == 0); - } - for (int i = fTextBoxes.size() - 1; i >= 0; i--) { - Text curr = (Text) fTextBoxes.get(i); - String key = (String) curr.getData(); - String currValue = (String) fWorkingValues.get(key); - curr.setText(currValue); - } - } - - private IStatus validatePositiveNumber(String number) { - StatusInfo status = new StatusInfo(); - if (number.length() == 0) { - status.setError(PHPUIMessages - .getString("CodeFormatterPreferencePage.empty_input")); //$NON-NLS-1$ - } else { - try { - int value = Integer.parseInt(number); - if (value < 0) { - status - .setError(PHPUIMessages - .getFormattedString( - "CodeFormatterPreferencePage.invalid_input", number)); //$NON-NLS-1$ - } - } catch (NumberFormatException e) { - status.setError(PHPUIMessages.getFormattedString( - "CodeFormatterPreferencePage.invalid_input", number)); //$NON-NLS-1$ - } - } - return status; - } - - private void updateStatus(IStatus status) { - if (!status.matches(IStatus.ERROR)) { - // look if there are more severe errors - for (int i = 0; i < fTextBoxes.size(); i++) { - Text curr = (Text) fTextBoxes.get(i); - if (!(curr == fTabSizeTextBox && usesTabs())) { - IStatus currStatus = validatePositiveNumber(curr.getText()); - status = StatusUtil.getMoreSevere(currStatus, status); - } - } - } - setValid(!status.matches(IStatus.ERROR)); - StatusUtil.applyToStatusLine(this, status); - } - - private boolean usesTabs() { - return TAB.equals(fWorkingValues.get(PREF_TAB_CHAR)); - } - -}