Package org.dyno.visual.swing.types.editor

Source Code of org.dyno.visual.swing.types.editor.BorderCellEditor

/************************************************************************************
* Copyright (c) 2008 William Chen.                                                 *
*                                                                                  *
* All rights reserved. This program and the accompanying materials are made        *
* available under the terms of the Eclipse Public License v1.0 which accompanies   *
* this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html *
*                                                                                  *
* Use is subject to the terms of Eclipse Public License v1.0.                      *
*                                                                                  *
* Contributors:                                                                    *
*     William Chen - initial API and implementation.                               *
************************************************************************************/

package org.dyno.visual.swing.types.editor;

import java.util.List;

import javax.swing.JComponent;
import javax.swing.border.Border;

import org.dyno.visual.swing.plugin.spi.WidgetAdapter;
import org.eclipse.jface.viewers.DialogCellEditor;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;

@SuppressWarnings("unchecked")
public class BorderCellEditor extends DialogCellEditor {
  private JComponent component;
  public BorderCellEditor(Object bean, Composite parent) {
    super(parent);
    if (bean == null) {
      setValue(bean);
    } else if (bean instanceof JComponent) {
      setValue(((JComponent) bean).getBorder());
      this.component = (JComponent)bean;
    } else if (bean instanceof Border) {
      setValue(bean);
    } else if(bean instanceof List){
      List beans=(List)bean;
      if(!beans.isEmpty()){
        bean=beans.get(0);
        if(bean instanceof JComponent){
          setValue(((JComponent) bean).getBorder());
          this.component = (JComponent)bean;
        } else if (bean instanceof Border) {
          setValue(bean);
        }
      }
    }
  }

  @Override
  protected Object openDialogBox(Control cellEditorWindow) {
    BorderDialog bDialog = new BorderDialog(cellEditorWindow.getShell());
    bDialog.setBorder((Border)getValue());
    bDialog.open();
    if (bDialog.getReturnCode() == Window.OK) {
      Object value = bDialog.getBorder();
            if(component!=null){
              changeComponentDirtyFlag();
            }
      if(value==null){
        markDirty();
        setValue(value);
                fireApplyEditorValue();
                return null;
      }else {
        return value;
      }
    } else
      return null;
  }

  private void changeComponentDirtyFlag() {
    WidgetAdapter adapter = WidgetAdapter.getWidgetAdapter(component);
    if(adapter!=null){
      adapter.setDirty(true);
      adapter.repaintDesigner();
    }     
  }

  protected Button createButton(Composite parent) {
    Button result = new Button(parent, SWT.DOWN);
    result.setText("."); //$NON-NLS-1$
    return result;
  }

  protected void updateContents(Object value) {
    Label lblText = getDefaultLabel();
    if (value == null)
      lblText.setText("null");
    else {
      String name = value.getClass().getName();
      int dot = name.lastIndexOf('.');
      if (dot != -1)
        name = name.substring(dot + 1);
      lblText.setText(name);
    }
  }
}

TOP

Related Classes of org.dyno.visual.swing.types.editor.BorderCellEditor

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.