Package org.springframework.ide.eclipse.webflow.ui.graph.actions

Source Code of org.springframework.ide.eclipse.webflow.ui.graph.actions.EditPropertiesAction

/*******************************************************************************
* Copyright (c) 2007 Spring IDE Developers
* 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
*
* Contributors:
*     Spring IDE Developers - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.webflow.ui.graph.actions;

import java.util.List;

import org.eclipse.gef.EditPart;
import org.eclipse.gef.Request;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.commands.CompoundCommand;
import org.eclipse.gef.ui.actions.SelectionAction;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.ui.IWorkbenchPart;
import org.springframework.ide.eclipse.webflow.core.model.IWebflowModelElement;
import org.springframework.ide.eclipse.webflow.ui.editor.outline.webflow.WebflowUIImages;
import org.springframework.ide.eclipse.webflow.ui.graph.commands.EditPropertiesCommand;
import org.springframework.ide.eclipse.webflow.ui.graph.dialogs.DialogUtils;

/**
* {@link SelectionAction} that opens the Properties Dialog of the selected
* {@link IWebflowModelElement} and in case the {@link Dialog} is closed with
* {@link Dialog.OK} the values will be applied to the original element.
* @author Christian Dupuis
* @since 2.0
*/
public class EditPropertiesAction extends SelectionAction {

  public static final String EDITPROPERTIES_REQUEST = "Edit_propeties";

  public static final String EDITPROPERTIES = "Edit_propeties";

  private Request request;

  boolean openDialog = true;

  public void setOpenDialog(boolean openDialog) {
    this.openDialog = openDialog;
  }

  public EditPropertiesAction(IWorkbenchPart part) {
    super(part);
    request = new Request(EDITPROPERTIES_REQUEST);
    setText("Properties");
    setId(EDITPROPERTIES);
    setToolTipText("Edit properties of selected state");
    setImageDescriptor(WebflowUIImages.DESC_OBJS_PROPERTIES);
    setHoverImageDescriptor(getImageDescriptor());
  }

  /*
   * (non-Javadoc)
   * @see org.eclipse.gef.ui.actions.WorkbenchPartAction#calculateEnabled()
   */
  protected boolean calculateEnabled() {
    return canPerformAction();
  }

  /**
   * @return
   */
  private boolean canPerformAction() {
    if (getSelectedObjects().isEmpty())
      return false;
    List parts = getSelectedObjects();
    for (int i = 0; i < parts.size(); i++) {
      Object o = parts.get(i);
      if (!(o instanceof EditPart))
        return false;
      EditPart part = (EditPart) o;
      return part.getModel() instanceof IWebflowModelElement;
    }
    return true;
  }

  /**
   * @return
   */
  private CompoundCommand getCommand() {
    List editparts = getSelectedObjects();
    CompoundCommand cc = new CompoundCommand();
    for (int i = 0; i < editparts.size(); i++) {
      EditPart part = (EditPart) editparts.get(i);
      cc.add(part.getCommand(request));
    }
    return cc;
  }

  /*
   * (non-Javadoc)
   * @see org.eclipse.jface.action.Action#run()
   */
  public void run() {
    CompoundCommand cc = getCommand();

    for (int i = 0; i < cc.getCommands().size(); i++) {
      if (cc.getCommands().get(i) instanceof EditPropertiesCommand) {
        EditPropertiesCommand command = (EditPropertiesCommand) cc
            .getCommands().get(i);
        this.openDialog = true;
        runWithCommand(command);
      }
    }
  }

  /**
   * @param command
   */
  public void runWithCommand(Command cc) {
    int result = -1;
    EditPropertiesCommand command = (EditPropertiesCommand) cc;
    IWebflowModelElement child = command.getChild();
    IWebflowModelElement newChild = command.getChildClone();

    if (openDialog) {
      if (((IWebflowModelElement) child).getElementParent() instanceof IWebflowModelElement) {
        result = DialogUtils.openPropertiesDialog(
            (IWebflowModelElement)((IWebflowModelElement) child).getElementParent(),
            (IWebflowModelElement) newChild, false);
      }
      else {
        result = DialogUtils.openPropertiesDialog(null,
            (IWebflowModelElement) newChild, false);
      }
      if (result == Dialog.OK) {
        execute(command);
      }
    }
    else {
      execute(command);
    }
  }
}
TOP

Related Classes of org.springframework.ide.eclipse.webflow.ui.graph.actions.EditPropertiesAction

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.