Package org.objectstyle.wolips.wooeditor.editor

Source Code of org.objectstyle.wolips.wooeditor.editor.DisplayGroupDetailsPage

/* ====================================================================
*
* The ObjectStyle Group Software License, Version 1.0
*
* Copyright (c) 2005 The ObjectStyle Group,
* and individual authors of the software.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in
*    the documentation and/or other materials provided with the
*    distribution.
*
* 3. The end-user documentation included with the redistribution, if
*    any, must include the following acknowlegement:
*       "This product includes software developed by the
*        ObjectStyle Group (http://objectstyle.org/)."
*    Alternately, this acknowlegement may appear in the software itself,
*    if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "ObjectStyle Group" and "Cayenne"
*    must not be used to endorse or promote products derived
*    from this software without prior written permission. For written
*    permission, please contact andrus@objectstyle.org.
*
* 5. Products derived from this software may not be called "ObjectStyle"
*    nor may "ObjectStyle" appear in their names without prior written
*    permission of the ObjectStyle Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED.  IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the ObjectStyle Group.  For more
* information on the ObjectStyle Group, please see
* <http://objectstyle.org/>.
*
*/
package org.objectstyle.wolips.wooeditor.editor;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.UpdateValueStrategy;
import org.eclipse.core.databinding.beans.BeansObservables;
import org.eclipse.core.databinding.conversion.IConverter;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
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.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.IDetailsPage;
import org.eclipse.ui.forms.IFormPart;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
import org.objectstyle.wolips.wodclipse.core.woo.DisplayGroup;
import org.objectstyle.wolips.wooeditor.databinding.observable.CustomSWTObservables;
import org.objectstyle.wolips.wooeditor.widgets.RadioGroup;

public class DisplayGroupDetailsPage implements IDetailsPage {

  private IManagedForm myManagedForm;

  private DisplayGroup myDisplayGroup;

  private Group myMasterDetailGroup;

  private Text myNameText;

  private Combo myClassNameCombo;

  private Spinner myEntriesPerBatchSpinner;

  private Combo myEntityCombo;

  private Text myEditingContextText;

  private Combo myMasterEntityCombo;

  private Combo mySortAttributeCombo;

  private Combo myFetchSpecCombo;

  private Combo myDetailKeyCombo;

  private Combo myQualificationCombo;

  private Button myHasDetailButton;

  private Button myFetchOnLoadButton;

  private Button mySelectsFirstObjectButton;

  private RadioGroup mySortRadioGroup;

  private DataBindingContext myBindingContext;

  private PropertyChangeListener myDirtyStateListener = new PropertyChangeListener() {
    public void propertyChange(final PropertyChangeEvent evt) {
      myManagedForm.dirtyStateChanged();
    }
  };

  private final ModifyListener myEntityModifyListener = new ModifyListener() {
    public void modifyText(final ModifyEvent e) {
      Object selection = mySortRadioGroup.getSelection();
      if (!DisplayGroup.NOT_SORTED.equals(selection)) {
        mySortRadioGroup.setSelection(DisplayGroup.NOT_SORTED);
      }
      if (!myHasDetailButton.getSelection()) {
        myDetailKeyCombo.setText("");
      }
    }
  };

  private final ModifyListener myMasterEntityListener = new ModifyListener() {
    public void modifyText(final ModifyEvent e) {
      myDetailKeyCombo.setText("");
    }
  };

  private final SelectionListener mySortEntityListener = new SelectionListener() {
    public void widgetDefaultSelected(final SelectionEvent e) {
      widgetSelected(e);
    }

    public void widgetSelected(final SelectionEvent e) {
      Object selection = mySortRadioGroup.getSelection();
      if (DisplayGroup.NOT_SORTED.equals(selection)) {
        mySortRadioGroup.setSelection(DisplayGroup.ASCENDING);
      }
    }
  };

  public DisplayGroupDetailsPage() {
    super();
  }

  private void bind() {
    // XXX This method is too long
    if (myDisplayGroup == null) {
      return;
    }
    myBindingContext = new DataBindingContext();

    myBindingContext
        .bindValue(SWTObservables.observeText(myNameText, SWT.Modify), BeansObservables.observeValue(myDisplayGroup, DisplayGroup.NAME), null, null);

    myBindingContext.bindList(SWTObservables.observeItems(myClassNameCombo), BeansObservables.observeList(Realm.getDefault(), myDisplayGroup,
        DisplayGroup.CLASS_NAME_LIST), null, null);
    myBindingContext.bindValue(SWTObservables.observeSingleSelectionIndex(myClassNameCombo), BeansObservables.observeValue(myDisplayGroup,
        DisplayGroup.CLASS_NAME_INDEX), null, null);

    myBindingContext.bindList(SWTObservables.observeItems(myEntityCombo), BeansObservables.observeList(Realm.getDefault(), myDisplayGroup,
        DisplayGroup.ENTITY_LIST), null, null);
    myBindingContext.bindValue(SWTObservables.observeEnabled(myMasterDetailGroup), BeansObservables
        .observeValue(myDisplayGroup, DisplayGroup.HAS_MASTER_DETAIL), new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

    UpdateValueStrategy booleanInverse = new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE) {
      @Override
      protected IStatus doSet(final IObservableValue observableValue, final Object value) {
        Boolean newValue = !(Boolean) value;
        return super.doSet(observableValue, newValue);
      }
    };

    myBindingContext.bindValue(SWTObservables.observeEnabled(myEntityCombo), BeansObservables.observeValue(myDisplayGroup, DisplayGroup.HAS_MASTER_DETAIL),
        new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), booleanInverse);
    myBindingContext.bindValue(CustomSWTObservables.observeText(myEntityCombo), BeansObservables.observeValue(myDisplayGroup, DisplayGroup.ENTITY_NAME), null,
        null);

    myBindingContext.bindValue(SWTObservables.observeEnabled(myEditingContextText), BeansObservables.observeValue(myDisplayGroup,
        DisplayGroup.HAS_MASTER_DETAIL), new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), booleanInverse);
    myBindingContext.bindValue(SWTObservables.observeText(myEditingContextText, SWT.Modify), BeansObservables.observeValue(myDisplayGroup,
        DisplayGroup.EDITING_CONTEXT), null, null);

    myBindingContext.bindValue(SWTObservables.observeSelection(myHasDetailButton), BeansObservables
        .observeValue(myDisplayGroup, DisplayGroup.HAS_MASTER_DETAIL), null, null);

    myBindingContext.bindList(SWTObservables.observeItems(myMasterEntityCombo), BeansObservables.observeList(Realm.getDefault(), myDisplayGroup,
        DisplayGroup.ENTITY_LIST), null, null);
    myBindingContext.bindValue(CustomSWTObservables.observeText(myMasterEntityCombo), BeansObservables.observeValue(myDisplayGroup,
        DisplayGroup.MASTER_ENTITY_NAME), null, null);

    myBindingContext.bindList(SWTObservables.observeItems(myDetailKeyCombo), BeansObservables.observeList(Realm.getDefault(), myDisplayGroup,
        DisplayGroup.DETAIL_KEY_LIST), null, null);

    myBindingContext.bindValue(CustomSWTObservables.observeText(myDetailKeyCombo), BeansObservables.observeValue(myDisplayGroup, DisplayGroup.DETAIL_KEY_NAME),
        null, null);

    myBindingContext.bindValue(SWTObservables.observeSelection(myEntriesPerBatchSpinner), BeansObservables.observeValue(myDisplayGroup,
        DisplayGroup.ENTRIES_PER_BATCH), null, null);

    myBindingContext.bindValue(SWTObservables.observeSelection(mySelectsFirstObjectButton), BeansObservables.observeValue(myDisplayGroup,
        DisplayGroup.SELECTS_FIRST_OBJECT), null, null);

    myBindingContext.bindList(SWTObservables.observeItems(myQualificationCombo), BeansObservables.observeList(Realm.getDefault(), myDisplayGroup,
        DisplayGroup.QUALIFICATION_LIST), null, null);
    myBindingContext.bindValue(SWTObservables.observeSingleSelectionIndex(myQualificationCombo), BeansObservables.observeValue(myDisplayGroup,
        DisplayGroup.QUALIFICATION_INDEX), null, null);

    myBindingContext.bindValue(SWTObservables.observeSelection(myFetchOnLoadButton), BeansObservables
        .observeValue(myDisplayGroup, DisplayGroup.FETCHES_ON_LOAD), null, null);

    myBindingContext.bindList(SWTObservables.observeItems(mySortAttributeCombo), BeansObservables.observeList(Realm.getDefault(), myDisplayGroup,
        DisplayGroup.SORT_LIST), null, null);

    myBindingContext.bindValue(CustomSWTObservables.observeSelection(mySortAttributeCombo), BeansObservables.observeValue(myDisplayGroup,
        DisplayGroup.SORT_ORDER_KEY), null, null);

    myBindingContext.bindValue(CustomSWTObservables.observeSelection(mySortRadioGroup), BeansObservables.observeValue(myDisplayGroup, DisplayGroup.SORT_ORDER),
        null, null);

    UpdateValueStrategy fetchSpecEmpty = new UpdateValueStrategy();
    fetchSpecEmpty.setConverter(new IConverter() {
      public Object convert(final Object fromObject) {
        boolean result = fromObject != null && ((List<?>) fromObject).size() > 0;
        if (!myHasDetailButton.getSelection()) {
          return result;
        }
        return false;
      }

      public Object getFromType() {
        return new ArrayList<String>();
      }

      public Object getToType() {
        return true;
      }
    });

    UpdateValueStrategy fetchSpecEnabled = new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE) {
      @Override
      protected IStatus doSet(final IObservableValue observableValue, final Object value) {
        Boolean newValue = false;
        if (myFetchSpecCombo.getItemCount() > 0) {
          newValue = !(Boolean) value;
        }
        return super.doSet(observableValue, newValue);
      }
    };
    myBindingContext.bindValue(SWTObservables.observeEnabled(myFetchSpecCombo), BeansObservables.observeValue(myDisplayGroup, DisplayGroup.HAS_MASTER_DETAIL),
        new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), fetchSpecEnabled);

    myBindingContext.bindValue(SWTObservables.observeEnabled(myFetchSpecCombo), BeansObservables.observeValue(myDisplayGroup, DisplayGroup.FETCH_SPEC_LIST),
        new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), fetchSpecEmpty);

    myBindingContext.bindList(SWTObservables.observeItems(myFetchSpecCombo), BeansObservables.observeList(Realm.getDefault(), myDisplayGroup,
        DisplayGroup.FETCH_SPEC_LIST), null, null);

    UpdateValueStrategy fetchSpecSelection = new UpdateValueStrategy() {
      @Override
      protected IStatus doSet(IObservableValue observableValue, Object value) {
        if (value == null || value.equals("")) {
          value = DisplayGroup.FETCH_SPEC_NONE;
        }
        return super.doSet(observableValue, value);
      }
    };
    myBindingContext.bindValue(CustomSWTObservables.observeSelection(myFetchSpecCombo), BeansObservables.observeValue(myDisplayGroup,
        DisplayGroup.FETCH_SPEC_NAME), null, fetchSpecSelection);

    myEntityCombo.addModifyListener(myEntityModifyListener);
    myMasterEntityCombo.addModifyListener(myMasterEntityListener);
    mySortAttributeCombo.addSelectionListener(mySortEntityListener);

  }

  public void commit(final boolean onSave) {
    // nothing to do
  }

  public void createContents(final Composite parent) {
    // XXX: Q - This method is too long

    TableWrapLayout pageLayout = new TableWrapLayout();
    pageLayout.topMargin = 5;
    pageLayout.leftMargin = 5;
    pageLayout.rightMargin = 2;
    pageLayout.bottomMargin = 2;
    parent.setLayout(pageLayout);

    // Create form for layout
    FormToolkit form = myManagedForm.getToolkit();
    Section displayGroupSection = form.createSection(parent, Section.TITLE_BAR);
    displayGroupSection.marginWidth = 10;
    displayGroupSection.setText("Display Group Details");
    displayGroupSection.setDescription("Set the properties of the " + "selected display group.");

    TableWrapData tableWrapData = new TableWrapData(TableWrapData.FILL, TableWrapData.TOP);
    tableWrapData.grabHorizontal = true;
    displayGroupSection.setLayoutData(tableWrapData);

    // form.createCompositeSeparator(displayGroupSection);
    Composite displayGroupComposite = form.createComposite(displayGroupSection);

    GridLayout displayGroupLayout = new GridLayout();
    displayGroupLayout.marginWidth = 0;
    displayGroupLayout.marginHeight = 0;
    displayGroupLayout.numColumns = 2;
    displayGroupComposite.setLayout(displayGroupLayout);

    // Name
    form.createLabel(displayGroupComposite, "Name:");
    myNameText = form.createText(displayGroupComposite, "", SWT.SINGLE);
    GridData nameFieldLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    myNameText.setLayoutData(nameFieldLayoutData);

    // Class Name
    form.createLabel(displayGroupComposite, "Class Type:");
    myClassNameCombo = new Combo(displayGroupComposite, SWT.POP_UP);
    GridData classNameFieldLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    myNameText.setLayoutData(classNameFieldLayoutData);

    // Entity
    form.createLabel(displayGroupComposite, "Entity:");
    myEntityCombo = new Combo(displayGroupComposite, SWT.DROP_DOWN);
    GridData entityFieldLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    myEntityCombo.setLayoutData(entityFieldLayoutData);

    // Editing Context
    form.createLabel(displayGroupComposite, "Editing Context:");
    myEditingContextText = form.createText(displayGroupComposite, "", SWT.SINGLE);
    GridData editingContextFieldLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    myEditingContextText.setLayoutData(editingContextFieldLayoutData);

    // HasDetail
    createSpacer(form, displayGroupComposite, 1);
    myHasDetailButton = form.createButton(displayGroupComposite, "Has detail data source", SWT.CHECK);
    GridData hasDetailLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    hasDetailLayoutData.horizontalIndent = 5;
    myHasDetailButton.setLayoutData(hasDetailLayoutData);

    // Master/Detail Group
    myMasterDetailGroup = new Group(displayGroupComposite, SWT.NONE);
    myMasterDetailGroup.setBackground(displayGroupComposite.getBackground());
    myMasterDetailGroup.setText("Master / Detail");
    GridLayout masterDetailLayout = new GridLayout();
    masterDetailLayout.numColumns = 2;
    myMasterDetailGroup.setEnabled(false);
    myMasterDetailGroup.setLayout(masterDetailLayout);

    GridData masterDetailLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    masterDetailLayoutData.horizontalSpan = 2;
    myMasterDetailGroup.setLayoutData(masterDetailLayoutData);

    // Master Entity
    form.createLabel(myMasterDetailGroup, "Master Entity:");
    myMasterEntityCombo = new Combo(myMasterDetailGroup, SWT.DROP_DOWN);
    GridData masterEntityFieldLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    myMasterEntityCombo.setLayoutData(masterEntityFieldLayoutData);
    // XXX For debugging
    myMasterEntityCombo.setData("myMasterEntityCombo");

    // Detail Key
    Label label = form.createLabel(myMasterDetailGroup, "Detail Key:");
    label.setAlignment(SWT.RIGHT);
    myDetailKeyCombo = new Combo(myMasterDetailGroup, SWT.DROP_DOWN);
    GridData detailKeyFieldLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    myDetailKeyCombo.setLayoutData(detailKeyFieldLayoutData);

    // Entries per batch group (fixes layout of label and control)
    Composite batchGroupComposite = new Composite(displayGroupComposite, SWT.NONE);
    batchGroupComposite.setBackground(displayGroupComposite.getBackground());
    GridLayout batchLayout = new GridLayout();
    batchLayout.numColumns = 2;
    batchGroupComposite.setLayout(batchLayout);
    GridData batchGroupLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    batchGroupLayoutData.horizontalSpan = 2;
    batchGroupComposite.setLayoutData(batchGroupLayoutData);

    // Entries per batch
    form.createLabel(batchGroupComposite, "Entities per batch:");
    myEntriesPerBatchSpinner = new Spinner(batchGroupComposite, SWT.NULL);
    myEntriesPerBatchSpinner.setIncrement(5);
    GridData entriesPerBatchLayoutData = new GridData(SWT.FILL, SWT.FILL, false, false);
    myEntriesPerBatchSpinner.setLayoutData(entriesPerBatchLayoutData);

    // Selects first object
    createSpacer(form, displayGroupComposite, 1);
    mySelectsFirstObjectButton = form.createButton(displayGroupComposite, "Selects first object on load", SWT.CHECK);
    GridData selectsFirstObjectLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    selectsFirstObjectLayoutData.horizontalIndent = 5;
    mySelectsFirstObjectButton.setLayoutData(selectsFirstObjectLayoutData);

    // Fetches on load
    createSpacer(form, displayGroupComposite, 1);
    myFetchOnLoadButton = form.createButton(displayGroupComposite, "Fetches on load", SWT.CHECK);
    GridData fetchOnLoadLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    fetchOnLoadLayoutData.horizontalIndent = 5;
    myFetchOnLoadButton.setLayoutData(fetchOnLoadLayoutData);

    // Qualification type
    form.createLabel(displayGroupComposite, "Qualification:");
    myQualificationCombo = new Combo(displayGroupComposite, SWT.POP_UP);
    GridData qualificationFieldLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    myQualificationCombo.setLayoutData(qualificationFieldLayoutData);

    // Sorting attribute
    form.createLabel(displayGroupComposite, "Sorting:");
    mySortAttributeCombo = new Combo(displayGroupComposite, SWT.POP_UP);
    GridData sortingFieldLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    mySortAttributeCombo.setLayoutData(sortingFieldLayoutData);

    // Sort order radio group
    createSpacer(form, displayGroupComposite, 1);
    Composite radioGroupComposite = new Composite(displayGroupComposite, SWT.NO_BACKGROUND);
    radioGroupComposite.setLayout(new GridLayout());

    // Sort order radio buttons
    mySortRadioGroup = new RadioGroup();
    for (String s : DisplayGroup.SORT_OPTIONS) {
      Button sortButton = form.createButton(radioGroupComposite, s, SWT.RADIO);
      GridData sortButtonLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
      sortButton.setLayoutData(sortButtonLayoutData);
      mySortRadioGroup.add(sortButton);
    }

    // Fetch spec
    form.createLabel(displayGroupComposite, "Fetch Spec:");
    myFetchSpecCombo = new Combo(displayGroupComposite, SWT.POP_UP);
    GridData fetchSpecFieldLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
    myFetchSpecCombo.setLayoutData(fetchSpecFieldLayoutData);

    form.paintBordersFor(displayGroupSection);
    displayGroupSection.setClient(displayGroupComposite);
  }

  private void createSpacer(final FormToolkit toolkit, final Composite parent, final int span) {
    Label spacer = toolkit.createLabel(parent, "");
    GridData gd = new GridData();
    gd.horizontalSpan = span;
    spacer.setLayoutData(gd);
  }

  public void dispose() {
    disposeBindings();
  }

  protected void disposeBindings() {
    if (myBindingContext != null) {
      myBindingContext.dispose();
    }
    if (myEntityCombo != null && !myEntityCombo.isDisposed()) {
      myEntityCombo.removeModifyListener(myEntityModifyListener);
    }
    if (myMasterEntityCombo != null && !myMasterEntityCombo.isDisposed()) {
      myMasterEntityCombo.removeModifyListener(myMasterEntityListener);
    }
    if (mySortAttributeCombo != null && !mySortAttributeCombo.isDisposed()) {
      mySortAttributeCombo.removeSelectionListener(mySortEntityListener);
    }
  }

  public void initialize(final IManagedForm form) {
    this.myManagedForm = form;
  }

  public boolean isDirty() {
    if (myDisplayGroup == null) {
      return false;
    }
    return myDisplayGroup.getWooModel().isDirty();
  }

  public boolean isStale() {
    return false;
  }

  public void refresh() {
  }

  public void selectionChanged(final IFormPart part, final ISelection selection) {
    disposeBindings();
    IStructuredSelection ssel = (IStructuredSelection) selection;
    if (ssel.size() > 0) {
      setDisplayGroup((DisplayGroup) ssel.getFirstElement());
    } else {
      setDisplayGroup(null);
    }
    bind();
  }

  public void setDisplayGroup(final DisplayGroup displayGroup) {
    if (myDisplayGroup != null) {
      myDisplayGroup.removePropertyChangeListener(myDirtyStateListener);
    }
    myDisplayGroup = displayGroup;
    if (myDisplayGroup != null) {
      myDisplayGroup.addPropertyChangeListener(myDirtyStateListener);
    }

  }

  public void setFocus() {
    myNameText.setFocus();
  }

  public boolean setFormInput(final Object input) {
    return false;
  }

}
TOP

Related Classes of org.objectstyle.wolips.wooeditor.editor.DisplayGroupDetailsPage

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.