Package com.dubture.composer.ui.parts

Source Code of com.dubture.composer.ui.parts.BooleanFormEntry

package com.dubture.composer.ui.parts;

import java.util.ArrayList;

import org.eclipse.swt.SWT;
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.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.ui.forms.IFormColors;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.ui.forms.widgets.TableWrapLayout;

import com.dubture.composer.ui.editor.FormLayoutFactory;
import com.dubture.composer.ui.utils.WidgetFactory;

public class BooleanFormEntry {

  private boolean enabled = true;
  private Label label;
  private Button checkbox;
  private boolean ignoreNotify = false;
 
  private ArrayList<IBooleanFormEntryListener> listeners = new ArrayList<IBooleanFormEntryListener>();
 
  public BooleanFormEntry(Composite parent, FormToolkit toolkit, String labelText) {
    this(parent, toolkit, labelText, SWT.FLAT);
  }
 
  public BooleanFormEntry(Composite parent, FormToolkit toolkit, String labelText, int style) {
    createControl(parent, toolkit, labelText, style);
  }
 

  public Label getLabel() {
    return label;
  }
 
  public Button getCheckbox() {
    return checkbox;
  }

  public boolean getValue() {
    return checkbox.getSelection();
  }
 
  public void setValue(boolean value) {
    checkbox.setSelection(value);
  }
 
  public void setValue(boolean value, boolean ignoreNotify) {
    this.ignoreNotify = ignoreNotify;
    setValue(value);
    this.ignoreNotify = false;
  }
 
  public void setEnabled(boolean enabled) {
    this.enabled = enabled;
   
    checkbox.setEnabled(enabled);
  }
 
  public boolean isEnabled() {
    return enabled;
  }
 
  /**
   * Attaches the listener for the entry.
   *
   * @param listener
   */
  public void addBooleanFormEntryListener(IBooleanFormEntryListener listener) {
    listeners.add(listener);
  }
 

  /**
   * Detaches the listener for the entry.
   *
   * @param listener
   */
  public void removeBooleanFormEntryListener(IBooleanFormEntryListener listener) {
    listeners.remove(listener);
  }

  private void createControl(Composite parent, FormToolkit toolkit, String labelText, int style) {
    if (labelText != null) {
      label = toolkit.createLabel(parent, labelText);
      label.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));
    }
   
    checkbox = WidgetFactory.createButton(toolkit, parent, style | SWT.CHECK);
   
    addListener();
    fillIntoGrid(parent);
  }
 
  private void addListener() {
    checkbox.addSelectionListener(new SelectionListener() {
      public void widgetSelected(SelectionEvent e) {
        if (ignoreNotify)
          return;
       
        for (IBooleanFormEntryListener listener : listeners) {
          listener.selectionChanged(BooleanFormEntry.this);
        }
      }
     
      public void widgetDefaultSelected(SelectionEvent e) {}
    });
  }
 
  private void fillIntoGrid(Composite parent) {
    Layout layout = parent.getLayout();
    if (layout instanceof GridLayout) {
      int span = ((GridLayout) layout).numColumns;
     
      GridData gd;
      if (label != null) {
        gd = new GridData(GridData.VERTICAL_ALIGN_CENTER);
        label.setLayoutData(gd);
        span--;
      }
      gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
      gd.horizontalSpan = span;
      if (label != null) {
        gd.horizontalIndent = FormLayoutFactory.CONTROL_HORIZONTAL_INDENT;
      }
      gd.grabExcessHorizontalSpace = (span == 1);
      gd.widthHint = 10;
      checkbox.setLayoutData(gd);
    } else if (layout instanceof TableWrapLayout) {
      int span = ((TableWrapLayout) layout).numColumns;

      TableWrapData td;
      if (label != null) {
        td = new TableWrapData();
        td.valign = TableWrapData.MIDDLE;
        label.setLayoutData(td);
        span--;
      }
      td = new TableWrapData(TableWrapData.FILL);
      td.colspan = span;
      if (label != null) {
        td.indent = FormLayoutFactory.CONTROL_HORIZONTAL_INDENT;
      }
      td.grabHorizontal = (span == 1);
      td.valign = TableWrapData.MIDDLE;
      checkbox.setLayoutData(td);
    }
  }
}
TOP

Related Classes of com.dubture.composer.ui.parts.BooleanFormEntry

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.