Package tool.properties

Source Code of tool.properties.SamplePropertyPage

package tool.properties;

import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.PropertyPage;

public class SamplePropertyPage extends PropertyPage {

  private static final String PATH_TITLE = "Path:";
  private static final String OWNER_TITLE = "&Owner:";
  private static final String OWNER_PROPERTY = "OWNER";
  private static final String DEFAULT_OWNER = "John Doe";

  private static final int TEXT_FIELD_WIDTH = 50;

  private Text ownerText;

  /**
   * Constructor for SamplePropertyPage.
   */
  public SamplePropertyPage() {
    super();
  }

  private void addFirstSection(Composite parent) {
    Composite composite = createDefaultComposite(parent);

    //Label for path field
    Label pathLabel = new Label(composite, SWT.NONE);
    pathLabel.setText(PATH_TITLE);

    // Path text field
    Text pathValueText = new Text(composite, SWT.WRAP | SWT.READ_ONLY);
    pathValueText.setText(((IResource) getElement()).getFullPath().toString());
  }

  private void addSeparator(Composite parent) {
    Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
    GridData gridData = new GridData();
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    separator.setLayoutData(gridData);
  }

  private void addSecondSection(Composite parent) {
    Composite composite = createDefaultComposite(parent);

    // Label for owner field
    Label ownerLabel = new Label(composite, SWT.NONE);
    ownerLabel.setText(OWNER_TITLE);

    // Owner text field
    ownerText = new Text(composite, SWT.SINGLE | SWT.BORDER);
    GridData gd = new GridData();
    gd.widthHint = convertWidthInCharsToPixels(TEXT_FIELD_WIDTH);
    ownerText.setLayoutData(gd);

    // Populate owner text field
    try {
      String owner =
        ((IResource) getElement()).getPersistentProperty(
          new QualifiedName("", OWNER_PROPERTY));
      ownerText.setText((owner != null) ? owner : DEFAULT_OWNER);
    } catch (CoreException e) {
      ownerText.setText(DEFAULT_OWNER);
    }
  }

  /**
   * @see PreferencePage#createContents(Composite)
   */
  protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    composite.setLayout(layout);
    GridData data = new GridData(GridData.FILL);
    data.grabExcessHorizontalSpace = true;
    composite.setLayoutData(data);

    addFirstSection(composite);
    addSeparator(composite);
    addSecondSection(composite);
    return composite;
  }

  private Composite createDefaultComposite(Composite parent) {
    Composite composite = new Composite(parent, SWT.NULL);
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;
    composite.setLayout(layout);

    GridData data = new GridData();
    data.verticalAlignment = GridData.FILL;
    data.horizontalAlignment = GridData.FILL;
    composite.setLayoutData(data);

    return composite;
  }

  protected void performDefaults() {
    super.performDefaults();
    // Populate the owner text field with the default value
    ownerText.setText(DEFAULT_OWNER);
  }
 
  public boolean performOk() {
    // store the value in the owner text field
    try {
      ((IResource) getElement()).setPersistentProperty(
        new QualifiedName("", OWNER_PROPERTY),
        ownerText.getText());
    } catch (CoreException e) {
      return false;
    }
    return true;
  }

}
TOP

Related Classes of tool.properties.SamplePropertyPage

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.