Package org.dyno.visual.swing.editors.actions

Source Code of org.dyno.visual.swing.editors.actions.AddEventAction

/************************************************************************************
* 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.editors.actions;

import java.beans.EventSetDescriptor;
import java.beans.MethodDescriptor;
import java.util.Map;

import org.dyno.visual.swing.designer.VisualDesigner;
import org.dyno.visual.swing.editors.VisualSwingEditor;
import org.dyno.visual.swing.plugin.spi.IEventListenerModel;
import org.dyno.visual.swing.plugin.spi.ParserFactory;
import org.dyno.visual.swing.plugin.spi.WidgetAdapter;
import org.eclipse.jface.action.Action;
import org.eclipse.swt.SWT;

public class AddEventAction extends Action {
  private EventSetDescriptor eventSet;
  private MethodDescriptor methodDesc;
  private WidgetAdapter adapter;

  public AddEventAction(WidgetAdapter adapter, EventSetDescriptor eventSet,
      MethodDescriptor methodDesc) {
    super(methodDesc.getDisplayName(), SWT.CHECK);
    this.adapter = adapter;
    this.eventSet = eventSet;
    this.methodDesc = methodDesc;
    setId(eventSet.getName() + "_" + methodDesc.getName());
    Map<EventSetDescriptor, IEventListenerModel> eventDesc=adapter.getEventDescriptor();
    IEventListenerModel model = eventDesc.get(eventSet);
    if (model != null) {
      if (model.hasMethod(methodDesc)) {
        String displayName = model.getDisplayName(methodDesc);
        setText(displayName);
        setChecked(true);
      }
    }
  }

  public void run() {
    Map<EventSetDescriptor, IEventListenerModel> eventDescriptor = adapter.getEventDescriptor();
    IEventListenerModel model = eventDescriptor.get(eventSet);
    if (model == null) {
      model = ParserFactory.getDefaultParserFactory().newModel(adapter,
          eventSet);
      eventDescriptor.put(eventSet, model);
    }
    if (!model.hasMethod(methodDesc)) {
      model.addMethod(methodDesc);
      adapter.setDirty(true);
    }
    adapter.addNotify();
    VisualDesigner designer = adapter.getDesigner();
    if (designer != null) {
      VisualSwingEditor editor = designer.getEditor();
      if (editor != null) {
        if (editor.isDirty())
          editor.saveWithProgress();
        model.editMethod(editor, methodDesc);
      }
    }
  }
}
TOP

Related Classes of org.dyno.visual.swing.editors.actions.AddEventAction

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.