X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.xml.ui/src/net/sourceforge/phpeclipse/xml/ui/internal/preferences/XMLSyntaxPreferencePage.java b/net.sourceforge.phpeclipse.xml.ui/src/net/sourceforge/phpeclipse/xml/ui/internal/preferences/XMLSyntaxPreferencePage.java index a0f8a5b..e855df2 100644 --- a/net.sourceforge.phpeclipse.xml.ui/src/net/sourceforge/phpeclipse/xml/ui/internal/preferences/XMLSyntaxPreferencePage.java +++ b/net.sourceforge.phpeclipse.xml.ui/src/net/sourceforge/phpeclipse/xml/ui/internal/preferences/XMLSyntaxPreferencePage.java @@ -9,7 +9,7 @@ * Roberto Gonzalez Rocha - Initial version * Igor Malinin - refactoring, minor changes * - * $Id: XMLSyntaxPreferencePage.java,v 1.2 2005-05-06 00:55:41 stefanbjarni Exp $ + * $Id: XMLSyntaxPreferencePage.java,v 1.3 2006-10-21 23:14:13 pombredanne Exp $ */ package net.sourceforge.phpeclipse.xml.ui.internal.preferences; @@ -59,440 +59,529 @@ import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.texteditor.AbstractTextEditor; /** - * The XMLSyntaxPreferencePage is a preference page that handles setting the colors used by the XML editors. + * The XMLSyntaxPreferencePage is a preference page that handles setting the + * colors used by the XML editors. */ -public class XMLSyntaxPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { +public class XMLSyntaxPreferencePage extends PreferencePage implements + IWorkbenchPreferencePage { + + public final PreferenceDescriptor[] fKeys = new PreferenceDescriptor[] { + new PreferenceDescriptor( + PreferenceDescriptor.BOOLEAN, + AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_DEFAULT + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_DEFAULT + + ITextStylePreferences.SUFFIX_STYLE), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_TAG + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_TAG + + ITextStylePreferences.SUFFIX_STYLE), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_ATT_NAME + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_ATT_NAME + + ITextStylePreferences.SUFFIX_STYLE), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_ATT_VALUE + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_ATT_VALUE + + ITextStylePreferences.SUFFIX_STYLE), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_ENTITY + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_ENTITY + + ITextStylePreferences.SUFFIX_STYLE), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_CDATA + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_CDATA + + ITextStylePreferences.SUFFIX_STYLE), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_PI + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_PI + + ITextStylePreferences.SUFFIX_STYLE), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_COMMENT + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_COMMENT + + ITextStylePreferences.SUFFIX_STYLE), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_DECL + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_DECL + + ITextStylePreferences.SUFFIX_STYLE), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_SMARTY + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.XML_SMARTY + + ITextStylePreferences.SUFFIX_STYLE), + + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.DTD_CONDITIONAL + + ITextStylePreferences.SUFFIX_FOREGROUND), + new PreferenceDescriptor(PreferenceDescriptor.STRING, + IXMLSyntaxConstants.DTD_CONDITIONAL + + ITextStylePreferences.SUFFIX_STYLE), }; + + OverlayPreferenceStore overlay; + + final String[][] fSyntaxColorListModel = new String[][] { + { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.others"), //$NON-NLS-1$ + IXMLSyntaxConstants.XML_DEFAULT }, + { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.Tag"), //$NON-NLS-1$ + IXMLSyntaxConstants.XML_TAG }, + { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.AttName"), //$NON-NLS-1$ + IXMLSyntaxConstants.XML_ATT_NAME }, + { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.AttValue"), //$NON-NLS-1$ + IXMLSyntaxConstants.XML_ATT_VALUE }, + { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.Entity"), //$NON-NLS-1$ + IXMLSyntaxConstants.XML_ENTITY }, + { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.CDATA"), //$NON-NLS-1$ + IXMLSyntaxConstants.XML_CDATA }, + { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.PI"), //$NON-NLS-1$ + IXMLSyntaxConstants.XML_PI }, + { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.Comment"), //$NON-NLS-1$ + IXMLSyntaxConstants.XML_COMMENT }, + { + XMLPlugin + .getResourceString("XmlSyntaxPreferencePage.Declaration"), //$NON-NLS-1$ + IXMLSyntaxConstants.XML_DECL }, + { + XMLPlugin + .getResourceString("XmlSyntaxPreferencePage.Conditional"), //$NON-NLS-1$ + IXMLSyntaxConstants.XML_SMARTY }, + { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.SmartyTag"), //$NON-NLS-1$ + IXMLSyntaxConstants.DTD_CONDITIONAL }, }; + + private XMLTextTools xmlTextTools; + + private Color bgColor; + + Button bgDefault; + + Button bgCustom; + + ColorEditor bgColorEditor; + + List colors; + + ColorEditor fgColorEditor; + + Button fgBold; + + SourceViewer preview; + + /** + * Constructor for XMLSyntaxPreferencePage. + */ + public XMLSyntaxPreferencePage() { + setDescription(XMLPlugin + .getResourceString("XmlSyntaxPreferencePage.description")); //$NON-NLS-1$ + + setPreferenceStore(XMLPlugin.getDefault().getPreferenceStore()); + + overlay = new OverlayPreferenceStore(getPreferenceStore(), fKeys); + } + + protected Control createContents(Composite parent) { + overlay.load(); + overlay.start(); + + Composite colorComposite = new Composite(parent, SWT.NULL); + colorComposite.setLayout(new GridLayout()); + + Group backgroundComposite = new Group(colorComposite, + SWT.SHADOW_ETCHED_IN); + + backgroundComposite.setLayout(new RowLayout()); + backgroundComposite.setText(XMLPlugin + .getResourceString("XmlSyntaxPreferencePage.backgroundColor")); //$NON-NLS-1$ + + SelectionListener backgroundSelectionListener = new SelectionListener() { + public void widgetSelected(SelectionEvent e) { + boolean custom = bgCustom.getSelection(); + bgColorEditor.getButton().setEnabled(custom); + overlay + .setValue( + AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT, + !custom); + } + + public void widgetDefaultSelected(SelectionEvent e) { + } + }; + + bgDefault = new Button(backgroundComposite, SWT.RADIO | SWT.LEFT); + bgDefault.setText(XMLPlugin + .getResourceString("XmlSyntaxPreferencePage.systemDefault")); //$NON-NLS-1$ + bgDefault.addSelectionListener(backgroundSelectionListener); + + bgCustom = new Button(backgroundComposite, SWT.RADIO | SWT.LEFT); + bgCustom.setText(XMLPlugin + .getResourceString("XmlSyntaxPreferencePage.custom")); //$NON-NLS-1$ + bgCustom.addSelectionListener(backgroundSelectionListener); + + bgColorEditor = new ColorEditor(backgroundComposite); + + Label label = new Label(colorComposite, SWT.LEFT); + label.setText(XMLPlugin + .getResourceString("XmlSyntaxPreferencePage.foreground")); //$NON-NLS-1$ + label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + Composite editorComposite = new Composite(colorComposite, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + layout.marginHeight = 0; + layout.marginWidth = 0; + editorComposite.setLayout(layout); + GridData gd = new GridData(GridData.FILL_BOTH); + editorComposite.setLayoutData(gd); + + colors = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL + | SWT.BORDER); + gd = new GridData(GridData.FILL_BOTH); + gd.heightHint = convertHeightInCharsToPixels(5); + colors.setLayoutData(gd); + + Composite stylesComposite = new Composite(editorComposite, SWT.NONE); + layout = new GridLayout(); + layout.marginHeight = 0; + layout.marginWidth = 0; + layout.numColumns = 2; + stylesComposite.setLayout(layout); + stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); - public final PreferenceDescriptor[] fKeys = new PreferenceDescriptor[] { - new PreferenceDescriptor(PreferenceDescriptor.BOOLEAN, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT), - new PreferenceDescriptor(PreferenceDescriptor.STRING, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_DEFAULT - + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_DEFAULT + ITextStylePreferences.SUFFIX_STYLE), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_TAG + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_TAG + ITextStylePreferences.SUFFIX_STYLE), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_ATT_NAME - + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_ATT_NAME + ITextStylePreferences.SUFFIX_STYLE), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_ATT_VALUE - + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_ATT_VALUE + ITextStylePreferences.SUFFIX_STYLE), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_ENTITY - + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_ENTITY + ITextStylePreferences.SUFFIX_STYLE), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_CDATA + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_CDATA + ITextStylePreferences.SUFFIX_STYLE), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_PI + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_PI + ITextStylePreferences.SUFFIX_STYLE), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_COMMENT - + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_COMMENT + ITextStylePreferences.SUFFIX_STYLE), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_DECL + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_DECL + ITextStylePreferences.SUFFIX_STYLE), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_SMARTY + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.XML_SMARTY + ITextStylePreferences.SUFFIX_STYLE), - - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.DTD_CONDITIONAL - + ITextStylePreferences.SUFFIX_FOREGROUND), - new PreferenceDescriptor(PreferenceDescriptor.STRING, IXMLSyntaxConstants.DTD_CONDITIONAL - + ITextStylePreferences.SUFFIX_STYLE),}; - - OverlayPreferenceStore overlay; - - final String[][] fSyntaxColorListModel = new String[][] { { - XMLPlugin.getResourceString("XmlSyntaxPreferencePage.others"), //$NON-NLS-1$ - IXMLSyntaxConstants.XML_DEFAULT }, { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.Tag"), //$NON-NLS-1$ - IXMLSyntaxConstants.XML_TAG }, { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.AttName"), //$NON-NLS-1$ - IXMLSyntaxConstants.XML_ATT_NAME }, { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.AttValue"), //$NON-NLS-1$ - IXMLSyntaxConstants.XML_ATT_VALUE }, { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.Entity"), //$NON-NLS-1$ - IXMLSyntaxConstants.XML_ENTITY }, { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.CDATA"), //$NON-NLS-1$ - IXMLSyntaxConstants.XML_CDATA }, { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.PI"), //$NON-NLS-1$ - IXMLSyntaxConstants.XML_PI }, { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.Comment"), //$NON-NLS-1$ - IXMLSyntaxConstants.XML_COMMENT }, { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.Declaration"), //$NON-NLS-1$ - IXMLSyntaxConstants.XML_DECL }, { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.Conditional"), //$NON-NLS-1$ - IXMLSyntaxConstants.XML_SMARTY }, { XMLPlugin.getResourceString("XmlSyntaxPreferencePage.SmartyTag"), //$NON-NLS-1$ - IXMLSyntaxConstants.DTD_CONDITIONAL }, - }; - - private XMLTextTools xmlTextTools; - - private Color bgColor; - - Button bgDefault; - - Button bgCustom; - - ColorEditor bgColorEditor; - - List colors; - - ColorEditor fgColorEditor; - - Button fgBold; - - SourceViewer preview; - - /** - * Constructor for XMLSyntaxPreferencePage. - */ - public XMLSyntaxPreferencePage() { - setDescription(XMLPlugin.getResourceString("XmlSyntaxPreferencePage.description")); //$NON-NLS-1$ - - setPreferenceStore(XMLPlugin.getDefault().getPreferenceStore()); - - overlay = new OverlayPreferenceStore(getPreferenceStore(), fKeys); - } - - protected Control createContents(Composite parent) { - overlay.load(); - overlay.start(); - - Composite colorComposite = new Composite(parent, SWT.NULL); - colorComposite.setLayout(new GridLayout()); - - Group backgroundComposite = new Group(colorComposite, SWT.SHADOW_ETCHED_IN); - - backgroundComposite.setLayout(new RowLayout()); - backgroundComposite.setText(XMLPlugin.getResourceString("XmlSyntaxPreferencePage.backgroundColor")); //$NON-NLS-1$ - - SelectionListener backgroundSelectionListener = new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - boolean custom = bgCustom.getSelection(); - bgColorEditor.getButton().setEnabled(custom); - overlay.setValue(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT, !custom); - } - - public void widgetDefaultSelected(SelectionEvent e) { - } - }; - - bgDefault = new Button(backgroundComposite, SWT.RADIO | SWT.LEFT); - bgDefault.setText(XMLPlugin.getResourceString("XmlSyntaxPreferencePage.systemDefault")); //$NON-NLS-1$ - bgDefault.addSelectionListener(backgroundSelectionListener); - - bgCustom = new Button(backgroundComposite, SWT.RADIO | SWT.LEFT); - bgCustom.setText(XMLPlugin.getResourceString("XmlSyntaxPreferencePage.custom")); //$NON-NLS-1$ - bgCustom.addSelectionListener(backgroundSelectionListener); - - bgColorEditor = new ColorEditor(backgroundComposite); - - Label label = new Label(colorComposite, SWT.LEFT); - label.setText(XMLPlugin.getResourceString("XmlSyntaxPreferencePage.foreground")); //$NON-NLS-1$ - label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - Composite editorComposite = new Composite(colorComposite, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - layout.marginHeight = 0; - layout.marginWidth = 0; - editorComposite.setLayout(layout); - GridData gd = new GridData(GridData.FILL_BOTH); - editorComposite.setLayoutData(gd); - - colors = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER); - gd = new GridData(GridData.FILL_BOTH); - gd.heightHint = convertHeightInCharsToPixels(5); - colors.setLayoutData(gd); - - Composite stylesComposite = new Composite(editorComposite, SWT.NONE); - layout = new GridLayout(); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.numColumns = 2; - stylesComposite.setLayout(layout); - stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); - - label = new Label(stylesComposite, SWT.LEFT); - label.setText(XMLPlugin.getResourceString("XmlSyntaxPreferencePage.color")); //$NON-NLS-1$ - gd = new GridData(); - gd.horizontalAlignment = GridData.BEGINNING; - label.setLayoutData(gd); - - fgColorEditor = new ColorEditor(stylesComposite); - - Button fgColorButton = fgColorEditor.getButton(); - gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalAlignment = GridData.BEGINNING; - fgColorButton.setLayoutData(gd); - - label = new Label(stylesComposite, SWT.LEFT); - label.setText(XMLPlugin.getResourceString("XmlSyntaxPreferencePage.bold")); //$NON-NLS-1$ - gd = new GridData(); - gd.horizontalAlignment = GridData.BEGINNING; - label.setLayoutData(gd); - - fgBold = new Button(stylesComposite, SWT.CHECK); - gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalAlignment = GridData.BEGINNING; - fgBold.setLayoutData(gd); - - label = new Label(colorComposite, SWT.LEFT); - label.setText(XMLPlugin.getResourceString("XmlSyntaxPreferencePage.preview")); //$NON-NLS-1$ - label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - Control previewer = createPreviewer(colorComposite); - gd = new GridData(GridData.FILL_BOTH); - gd.widthHint = convertWidthInCharsToPixels(20); - gd.heightHint = convertHeightInCharsToPixels(5); - previewer.setLayoutData(gd); - - colors.addSelectionListener(new SelectionListener() { - - public void widgetDefaultSelected(SelectionEvent e) { - } - - public void widgetSelected(SelectionEvent e) { - handleSyntaxColorListSelection(); - } - }); - - bgColorEditor.getButton().addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - - public void widgetSelected(SelectionEvent e) { - PreferenceConverter.setValue(overlay, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND, bgColorEditor.getColorValue()); - } - }); - - fgColorButton.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - - public void widgetSelected(SelectionEvent e) { - int i = colors.getSelectionIndex(); - - String key = fSyntaxColorListModel[i][1]; - - PreferenceConverter.setValue(overlay, key + ITextStylePreferences.SUFFIX_FOREGROUND, fgColorEditor.getColorValue()); - } - }); - - fgBold.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - - public void widgetSelected(SelectionEvent e) { - int i = colors.getSelectionIndex(); - - String key = fSyntaxColorListModel[i][1]; - - String value = (fgBold.getSelection()) ? ITextStylePreferences.STYLE_BOLD : ITextStylePreferences.STYLE_NORMAL; - - overlay.setValue(key + ITextStylePreferences.SUFFIX_STYLE, value); - } - }); - - initialize(); - - return colorComposite; - } - - private Control createPreviewer(Composite parent) { - xmlTextTools = new XMLTextTools(overlay); // REVISIT: DTD - - preview = new SourceViewer(parent, null, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER); - - preview.configure(new XMLConfiguration(xmlTextTools)); - preview.getTextWidget().setFont(JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT)); - preview.setEditable(false); - - initializeViewerColors(preview); - - String content = loadPreviewContentFromFile("preview.xml"); //$NON-NLS-1$ - IDocument document = new Document(content); - - // REVISIT: DTD - IDocumentPartitioner partitioner = xmlTextTools.createXMLPartitioner(); - - partitioner.connect(document); - document.setDocumentPartitioner(partitioner); - - preview.setDocument(document); - - overlay.addPropertyChangeListener(new IPropertyChangeListener() { - public void propertyChange(PropertyChangeEvent event) { - String p = event.getProperty(); - if (p.equals(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND) - || p.equals(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT)) { - initializeViewerColors(preview); - } - - preview.invalidateTextPresentation(); - } - }); - - return preview.getControl(); - } - - /** - * Initializes the given viewer's colors. - * - * @param viewer - * the viewer to be initialized - */ - void initializeViewerColors(ISourceViewer viewer) { - if (overlay != null) { - StyledText styledText = viewer.getTextWidget(); - - // ---------- background color ---------------------- - Color color = null; - if (!overlay.getBoolean(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT)) { - color = createColor(overlay, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND, styledText.getDisplay()); - } - - styledText.setBackground(color); - - if (bgColor != null) { - bgColor.dispose(); - } - - bgColor = color; - } - } - - /** - * Creates a color from the information stored in the given preference store. Returns null if there is no such - * information available. - */ - private Color createColor(IPreferenceStore store, String key, Display display) { - RGB rgb = null; - - if (store.contains(key)) { - if (store.isDefault(key)) { - rgb = PreferenceConverter.getDefaultColor(store, key); - } else { - rgb = PreferenceConverter.getColor(store, key); - } - - if (rgb != null) { - return new Color(display, rgb); - } - } - - return null; - } - - void handleSyntaxColorListSelection() { - int i = colors.getSelectionIndex(); - - String key = fSyntaxColorListModel[i][1]; - - RGB rgb = PreferenceConverter.getColor(overlay, key + ITextStylePreferences.SUFFIX_FOREGROUND); - - fgColorEditor.setColorValue(rgb); - - // REVISIT - fgBold.setSelection(overlay.getString(key + ITextStylePreferences.SUFFIX_STYLE).indexOf(ITextStylePreferences.STYLE_BOLD) >= 0); - } - - private String loadPreviewContentFromFile(String filename) { - StringBuffer string = new StringBuffer(512); - - try { - char[] buf = new char[512]; - BufferedReader reader = new BufferedReader(new InputStreamReader(XMLSyntaxPreferencePage.class.getResourceAsStream(filename))); - - try { - while (true) { - int n = reader.read(buf); - if (n < 0) { - break; - } - - string.append(buf, 0, n); - } - } finally { - reader.close(); - } - } catch (IOException e) { - } - - return string.toString(); - } - - /** - * - */ - private void initialize() { - initializeFields(); - - for (int i = 0; i < fSyntaxColorListModel.length; i++) { - colors.add(fSyntaxColorListModel[i][0]); - } - - colors.getDisplay().asyncExec(new Runnable() { - - public void run() { - colors.select(0); - handleSyntaxColorListSelection(); - } - }); - } - - private void initializeFields() { - RGB rgb = PreferenceConverter.getColor(overlay, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND); - bgColorEditor.setColorValue(rgb); - - boolean def = overlay.getBoolean(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT); - bgDefault.setSelection(def); - bgCustom.setSelection(!def); - bgColorEditor.getButton().setEnabled(!def); - } - - /* - * @see IWorkbenchPreferencePage#init(IWorkbench) - */ - public void init(IWorkbench workbench) { - } - - /* - * @see PreferencePage#performDefaults() - */ - protected void performDefaults() { - overlay.loadDefaults(); - //initializeFields(); - handleSyntaxColorListSelection(); - - super.performDefaults(); - - preview.invalidateTextPresentation(); - } - - /* - * @see org.eclipse.jface.preference.IPreferencePage#performOk() - */ - public boolean performOk() { - overlay.propagate(); - XMLPlugin.getDefault().savePluginPreferences(); - - return true; - } - - /* - * @see org.eclipse.jface.dialogs.IDialogPage#dispose() - */ - public void dispose() { - if (xmlTextTools != null) { - xmlTextTools.dispose(); - xmlTextTools = null; - } - - if (overlay != null) { - overlay.stop(); - overlay = null; - } - - super.dispose(); - } + label = new Label(stylesComposite, SWT.LEFT); + label.setText(XMLPlugin + .getResourceString("XmlSyntaxPreferencePage.color")); //$NON-NLS-1$ + gd = new GridData(); + gd.horizontalAlignment = GridData.BEGINNING; + label.setLayoutData(gd); + + fgColorEditor = new ColorEditor(stylesComposite); + + Button fgColorButton = fgColorEditor.getButton(); + gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalAlignment = GridData.BEGINNING; + fgColorButton.setLayoutData(gd); + + label = new Label(stylesComposite, SWT.LEFT); + label.setText(XMLPlugin + .getResourceString("XmlSyntaxPreferencePage.bold")); //$NON-NLS-1$ + gd = new GridData(); + gd.horizontalAlignment = GridData.BEGINNING; + label.setLayoutData(gd); + + fgBold = new Button(stylesComposite, SWT.CHECK); + gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalAlignment = GridData.BEGINNING; + fgBold.setLayoutData(gd); + + label = new Label(colorComposite, SWT.LEFT); + label.setText(XMLPlugin + .getResourceString("XmlSyntaxPreferencePage.preview")); //$NON-NLS-1$ + label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + Control previewer = createPreviewer(colorComposite); + gd = new GridData(GridData.FILL_BOTH); + gd.widthHint = convertWidthInCharsToPixels(20); + gd.heightHint = convertHeightInCharsToPixels(5); + previewer.setLayoutData(gd); + + colors.addSelectionListener(new SelectionListener() { + + public void widgetDefaultSelected(SelectionEvent e) { + } + + public void widgetSelected(SelectionEvent e) { + handleSyntaxColorListSelection(); + } + }); + + bgColorEditor.getButton().addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + + public void widgetSelected(SelectionEvent e) { + PreferenceConverter.setValue(overlay, + AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND, + bgColorEditor.getColorValue()); + } + }); + + fgColorButton.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + + public void widgetSelected(SelectionEvent e) { + int i = colors.getSelectionIndex(); + + String key = fSyntaxColorListModel[i][1]; + + PreferenceConverter.setValue(overlay, key + + ITextStylePreferences.SUFFIX_FOREGROUND, + fgColorEditor.getColorValue()); + } + }); + + fgBold.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + + public void widgetSelected(SelectionEvent e) { + int i = colors.getSelectionIndex(); + + String key = fSyntaxColorListModel[i][1]; + + String value = (fgBold.getSelection()) ? ITextStylePreferences.STYLE_BOLD + : ITextStylePreferences.STYLE_NORMAL; + + overlay.setValue(key + ITextStylePreferences.SUFFIX_STYLE, + value); + } + }); + + initialize(); + + return colorComposite; + } + + private Control createPreviewer(Composite parent) { + xmlTextTools = new XMLTextTools(overlay); // REVISIT: DTD + + preview = new SourceViewer(parent, null, SWT.V_SCROLL | SWT.H_SCROLL + | SWT.BORDER); + + preview.configure(new XMLConfiguration(xmlTextTools)); + preview.getTextWidget().setFont( + JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT)); + preview.setEditable(false); + + initializeViewerColors(preview); + + String content = loadPreviewContentFromFile("preview.xml"); //$NON-NLS-1$ + IDocument document = new Document(content); + + // REVISIT: DTD + IDocumentPartitioner partitioner = xmlTextTools.createXMLPartitioner(); + + partitioner.connect(document); + document.setDocumentPartitioner(partitioner); + + preview.setDocument(document); + + overlay.addPropertyChangeListener(new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + String p = event.getProperty(); + if (p.equals(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND) + || p + .equals(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT)) { + initializeViewerColors(preview); + } + + preview.invalidateTextPresentation(); + } + }); + + return preview.getControl(); + } + + /** + * Initializes the given viewer's colors. + * + * @param viewer + * the viewer to be initialized + */ + void initializeViewerColors(ISourceViewer viewer) { + if (overlay != null) { + StyledText styledText = viewer.getTextWidget(); + + // ---------- background color ---------------------- + Color color = null; + if (!overlay + .getBoolean(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT)) { + color = createColor(overlay, + AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND, + styledText.getDisplay()); + } + + styledText.setBackground(color); + + if (bgColor != null) { + bgColor.dispose(); + } + + bgColor = color; + } + } + + /** + * Creates a color from the information stored in the given preference + * store. Returns null if there is no such information + * available. + */ + private Color createColor(IPreferenceStore store, String key, + Display display) { + RGB rgb = null; + + if (store.contains(key)) { + if (store.isDefault(key)) { + rgb = PreferenceConverter.getDefaultColor(store, key); + } else { + rgb = PreferenceConverter.getColor(store, key); + } + + if (rgb != null) { + return new Color(display, rgb); + } + } + + return null; + } + + void handleSyntaxColorListSelection() { + int i = colors.getSelectionIndex(); + + String key = fSyntaxColorListModel[i][1]; + + RGB rgb = PreferenceConverter.getColor(overlay, key + + ITextStylePreferences.SUFFIX_FOREGROUND); + + fgColorEditor.setColorValue(rgb); + + // REVISIT + fgBold.setSelection(overlay.getString( + key + ITextStylePreferences.SUFFIX_STYLE).indexOf( + ITextStylePreferences.STYLE_BOLD) >= 0); + } + + private String loadPreviewContentFromFile(String filename) { + StringBuffer string = new StringBuffer(512); + + try { + char[] buf = new char[512]; + BufferedReader reader = new BufferedReader( + new InputStreamReader(XMLSyntaxPreferencePage.class + .getResourceAsStream(filename))); + + try { + while (true) { + int n = reader.read(buf); + if (n < 0) { + break; + } + + string.append(buf, 0, n); + } + } finally { + reader.close(); + } + } catch (IOException e) { + } + + return string.toString(); + } + + /** + * + */ + private void initialize() { + initializeFields(); + + for (int i = 0; i < fSyntaxColorListModel.length; i++) { + colors.add(fSyntaxColorListModel[i][0]); + } + + colors.getDisplay().asyncExec(new Runnable() { + + public void run() { + colors.select(0); + handleSyntaxColorListSelection(); + } + }); + } + + private void initializeFields() { + RGB rgb = PreferenceConverter.getColor(overlay, + AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND); + bgColorEditor.setColorValue(rgb); + + boolean def = overlay + .getBoolean(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT); + bgDefault.setSelection(def); + bgCustom.setSelection(!def); + bgColorEditor.getButton().setEnabled(!def); + } + + /* + * @see IWorkbenchPreferencePage#init(IWorkbench) + */ + public void init(IWorkbench workbench) { + } + + /* + * @see PreferencePage#performDefaults() + */ + protected void performDefaults() { + overlay.loadDefaults(); + // initializeFields(); + handleSyntaxColorListSelection(); + + super.performDefaults(); + + preview.invalidateTextPresentation(); + } + + /* + * @see org.eclipse.jface.preference.IPreferencePage#performOk() + */ + public boolean performOk() { + overlay.propagate(); + XMLPlugin.getDefault().savePluginPreferences(); + + return true; + } + + /* + * @see org.eclipse.jface.dialogs.IDialogPage#dispose() + */ + public void dispose() { + if (xmlTextTools != null) { + xmlTextTools.dispose(); + xmlTextTools = null; + } + + if (overlay != null) { + overlay.stop(); + overlay = null; + } + + super.dispose(); + } } \ No newline at end of file