Package org.eclipse.sapphire.ui.swt.gef.parts

Source Code of org.eclipse.sapphire.ui.swt.gef.parts.TextEditPart

/******************************************************************************
* Copyright (c) 2014 Oracle
* 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:
*    Shenxue Zhou - initial implementation and ongoing maintenance
*    Ling Hao - [383924] Extend Sapphire Diagram Framework to support SQL Schema diagram like editors
******************************************************************************/

package org.eclipse.sapphire.ui.swt.gef.parts;

import java.beans.PropertyChangeEvent;

import org.eclipse.gef.DragTracker;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.Request;
import org.eclipse.gef.RequestConstants;
import org.eclipse.gef.requests.DirectEditRequest;
import org.eclipse.gef.requests.SelectionRequest;
import org.eclipse.gef.tools.DirectEditManager;
import org.eclipse.sapphire.ui.diagram.editor.TextPart;
import org.eclipse.sapphire.ui.swt.gef.DiagramConfigurationManager;
import org.eclipse.sapphire.ui.swt.gef.figures.TextFigure;
import org.eclipse.sapphire.ui.swt.gef.internal.DirectEditorManagerFactory;
import org.eclipse.sapphire.ui.swt.gef.model.ShapeModel;
import org.eclipse.sapphire.ui.swt.gef.model.TextModel;
import org.eclipse.sapphire.ui.swt.gef.policies.NodeLabelDirectEditPolicy;
import org.eclipse.sapphire.ui.swt.gef.tools.SapphireDragEditPartsTracker;

/**
* @author <a href="mailto:shenxue.zhou@oracle.com">Shenxue Zhou</a>
*/

public class TextEditPart extends ShapeEditPart
{
  public TextEditPart(DiagramConfigurationManager configManager)
  {
    super(configManager);
  }
   
  @Override
  protected void createEditPolicies()
  {
    TextModel textModel = (TextModel)getModel();
    TextPart textPart = (TextPart)textModel.getSapphirePart();

    if (textPart.isEditable())
    {
      installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new NodeLabelDirectEditPolicy());
    }
  }
 
  @Override
  protected void refreshVisuals()
  {
    TextModel textModel = (TextModel)getModel();
    TextPart textPart = (TextPart)textModel.getSapphirePart();
    ((TextFigure)getFigure()).setText(textPart.getContent());
  }
   
  @Override
  public void performRequest(Request request)
  {
    if (request.getType() == RequestConstants.REQ_DIRECT_EDIT)
    {
      if (!(request instanceof DirectEditRequest))
      {
        // Direct edit invoked using key command
        performDirectEdit();
      }
    }
    else if (request.getType().equals(REQ_OPEN) && (request instanceof SelectionRequest))
    {
      performDirectEdit();
    }
    else
    {
      super.performRequest(request);
    }
  }

  @Override
  public void propertyChange(PropertyChangeEvent evt)
  {
    String prop = evt.getPropertyName();
    if (prop.equals(ShapeModel.SHAPE_START_EDITING))
    {
      performDirectEdit();
    }
  }
 
  private void performDirectEdit()
  {
    TextModel textModel = (TextModel)getModel();
    TextPart textPart = (TextPart)textModel.getSapphirePart();   
    if (textPart.isEditable())
    {
      TextFigure textFigure = (TextFigure)getFigure();
      if (textFigure != null)
      {
        DirectEditManager manager = DirectEditorManagerFactory.createDirectEditorManager(this, textPart,
            new NodeCellEditorLocator(getConfigurationManager(), textFigure), textFigure);
        manager.show();
      }
    }
  }
 
  @Override
  public DragTracker getDragTracker(Request request) {
    return new SapphireDragEditPartsTracker(this);
  }
 
}
TOP

Related Classes of org.eclipse.sapphire.ui.swt.gef.parts.TextEditPart

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.