Package tk.eclipse.plugin.htmleditor

Source Code of tk.eclipse.plugin.htmleditor.XMLPreferencePage

package tk.eclipse.plugin.htmleditor;


import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.resource.StringConverter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.List;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.objectstyle.wolips.wodclipse.core.Activator;
import org.objectstyle.wolips.wodclipse.core.preferences.PreferenceConstants;

/**
* The preference page for the <code>XMLEditor</code>.
*
* @author Naoki Takezoe
* @since 2.0.3
*/
public class XMLPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
 
  private IWorkbench _workbench;
  private Button _enableClassName;
  private Button spacesAroundEquals;
  private Button _stickyWOTags;
  private List _classNameAttrs;
  private Button _addClassName;
  private Button _removeClassName;
 
  public XMLPreferencePage() {
    super(HTMLPlugin.getResourceString("HTMLEditorPreferencePage.XML"));
    setPreferenceStore(HTMLPlugin.getDefault().getPreferenceStore());
    //setDescription(HTMLPlugin.getResourceString("HTMLEditorPreferencePage.XML"));
  }
 
  /**
   * Creates contents of the preference page.
   *
   * @param parent the parent <code>Composite</code>
   * @retrun the created <code>Control</code> which contains contents.
   */
  @Override
  protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NULL);
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));
    composite.setLayout(new GridLayout(2, false));
   
    // checkbox to toggle spaces around equals
        boolean spacesAroundEqualsValue =Activator.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.SPACES_AROUND_EQUALS);
    spacesAroundEquals = new Button(composite, SWT.CHECK);
    spacesAroundEquals.setText(HTMLPlugin.getResourceString("HTMLEditorPreferencePage.SpacesAroundEquals"));
    spacesAroundEquals.setSelection(spacesAroundEqualsValue);
    spacesAroundEquals.addSelectionListener(new SelectionAdapter(){
      @Override
       public void widgetSelected(SelectionEvent e){
        Activator.getDefault().getPreferenceStore().setValue(PreferenceConstants.SPACES_AROUND_EQUALS, spacesAroundEquals.getSelection());
      }
    });
    GridData gd = new GridData();
    gd.horizontalSpan = 2;
    spacesAroundEquals.setLayoutData(gd);
   
    // checkbox to toggle spaces around equals
    boolean stickyWoTagsValue = Activator.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.STICKY_WOTAGS);
    _stickyWOTags = new Button(composite, SWT.CHECK);
    _stickyWOTags.setText(HTMLPlugin.getResourceString("HTMLEditorPreferencePage.StickyWOTags"));
    _stickyWOTags.setSelection(stickyWoTagsValue);
    _stickyWOTags.addSelectionListener(new SelectionAdapter(){
      @Override
      public void widgetSelected(SelectionEvent e){
        Activator.getDefault().getPreferenceStore().setValue(PreferenceConstants.STICKY_WOTAGS, _stickyWOTags.getSelection());
      }
    });
    gd = new GridData();
    gd.horizontalSpan = 2;
    _stickyWOTags.setLayoutData(gd);

   
   
    // checkbox to toggle the classname support
    _enableClassName = new Button(composite, SWT.CHECK);
    _enableClassName.setText(HTMLPlugin.getResourceString("HTMLEditorPreferencePage.EnableClassName"));
    _enableClassName.addSelectionListener(new SelectionAdapter(){
      @Override
      public void widgetSelected(SelectionEvent e){
        updateControls();
      }
    });
    gd.horizontalSpan = 2;
   
    _enableClassName.setLayoutData(gd);
   
   
    // listbox
    _classNameAttrs = new List(composite, SWT.BORDER|SWT.MULTI|SWT.V_SCROLL);
    _classNameAttrs.setLayoutData(new GridData(GridData.FILL_BOTH));
    _classNameAttrs.addSelectionListener(new SelectionAdapter(){
      @Override
      public void widgetSelected(SelectionEvent e){
        updateControls();
      }
    });
   
    Composite buttons = new Composite(composite, SWT.NULL);
    GridLayout layout = new GridLayout(1, false);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    buttons.setLayout(layout);
    buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
   
    _addClassName = new Button(buttons, SWT.PUSH);
    _addClassName.setText(HTMLPlugin.getResourceString("HTMLEditorPreferencePage.AddAttribute"));
    _addClassName.setLayoutData(createButtonGridData());
    _addClassName.addSelectionListener(new SelectionAdapter(){
      @Override
      public void widgetSelected(SelectionEvent e){
        InputDialog dialog = new InputDialog(
            _workbench.getActiveWorkbenchWindow().getShell(),
            HTMLPlugin.getResourceString("HTMLEditorPreferencePage.Dialog.Title"),
            HTMLPlugin.getResourceString("HTMLEditorPreferencePage.Dialog.Message"),
            "",
            new IInputValidator(){
              public String isValid(String newText) {
                return newText.length()==0 ?
                    HTMLPlugin.getResourceString("HTMLEditorPreferencePage.Dialog.Error") : null;
              }
        });
        if(dialog.open()==InputDialog.OK){
          _classNameAttrs.add(dialog.getValue());
        }
      }
    });
   
    _removeClassName = new Button(buttons, SWT.PUSH);
    _removeClassName.setText(HTMLPlugin.getResourceString("HTMLEditorPreferencePage.RemoveAttribute"));
    _removeClassName.setLayoutData(createButtonGridData());
    _removeClassName.addSelectionListener(new SelectionAdapter(){
      @Override
      public void widgetSelected(SelectionEvent e){
        _classNameAttrs.remove(_classNameAttrs.getSelectionIndices());
      }
    });
   
    // fill initial values
    IPreferenceStore store = getPreferenceStore();
    _enableClassName.setSelection(
        store.getBoolean(HTMLPlugin.PREF_ENABLE_CLASSNAME));
    String[] values = StringConverter.asArray(
        store.getString(HTMLPlugin.PREF_CLASSNAME_ATTRS));
    for(int i=0;i<values.length;i++){
      _classNameAttrs.add(values[i]);
    }
   
    updateControls();
    return composite;
  }
 
  /**
   * Updates controls status.
   */
  private void updateControls(){
    boolean enableClassName = this._enableClassName.getSelection();
    _classNameAttrs.setEnabled(enableClassName);
    _addClassName.setEnabled(enableClassName);
    _removeClassName.setEnabled(enableClassName);
    if(enableClassName){
      _removeClassName.setEnabled(_classNameAttrs.getSelectionCount()>0);
    }
  }
 
  /**
   * Creates the <code>GridData</code> for buttons.
   *
   * @return the <code>GridData</code> which is configured for buttons
   */
  private static GridData createButtonGridData(){
    return new GridData(SWT.FILL, SWT.DEFAULT, true, false);
  }

  /**
   * Initializes the preference page.
   *
   * @param workbench the <code>IWorkbench</code> instance
   */
  public void init(IWorkbench workbench) {
    this._workbench = workbench;
  }

  /* (non-Javadoc)
   * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
   */
  @Override
  protected void performDefaults() {
    IPreferenceStore store = getPreferenceStore();
    _enableClassName.setSelection(
        store.getDefaultBoolean(HTMLPlugin.PREF_ENABLE_CLASSNAME));
    String[] values = StringConverter.asArray(
        store.getDefaultString(HTMLPlugin.PREF_CLASSNAME_ATTRS));
    _classNameAttrs.removeAll();
    for(int i=0;i<values.length;i++){
      _classNameAttrs.add(values[i]);
    }
  }

  /* (non-Javadoc)
   * @see org.eclipse.jface.preference.PreferencePage#performOk()
   */
  @Override
  public boolean performOk() {
    IPreferenceStore store = getPreferenceStore();
    store.setValue(HTMLPlugin.PREF_ENABLE_CLASSNAME, _enableClassName.getSelection());
   
    String[] items = _classNameAttrs.getItems();
    StringBuffer sb = new StringBuffer();
    for(int i=0;i<items.length;i++){
      if(i!=0){
        sb.append(" ");
      }
      sb.append(items[i]);
    }
    store.setValue(HTMLPlugin.PREF_CLASSNAME_ATTRS, sb.toString());
   
    return true;
  }

}
TOP

Related Classes of tk.eclipse.plugin.htmleditor.XMLPreferencePage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.