blob: 66bf8076ee855dcffd7c6652d703ee1f2aeff626 [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2005, 2012 SAP AG.
* 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:
* SAP AG - initial API, implementation and documentation
*
* </copyright>
*
*******************************************************************************/
package org.eclipse.graphiti.ui.internal.policy;
import org.eclipse.gef.EditPolicy;
import org.eclipse.graphiti.ui.internal.config.IConfigurationProviderHolder;
import org.eclipse.graphiti.ui.platform.IConfigurationProvider;
/**
* All EditPolicies must be created with this IEditPolicyFactory. This provides
* an easy way to exchange the standard EditPolicies with specific
* implementations.
*
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This class is not intended to be subclassed by clients.
*/
public interface IEditPolicyFactory extends IConfigurationProviderHolder {
/**
* Disposes this object and frees all resources. This object will be
* unusable afterwards.
*/
public void dispose();
// ================ EditPolicies for Shape EditParts =====================
/**
* Creates an EditPolicy, which 'forbids' any Layout dependent Commands. All
* methods of this EditPolicy return null, which is different from using no
* EditPolicy at all, because it will create a visible feedback that the
* requests are forbidden. This EditPolicy can for example be used for those
* EditParts, which do not have any children. It forbids commands for the
* following requests:
* <ul>
* <li>A child EditPart shall be moved from another parent-EditPart into
* this parent-EditPart.</li>
* <li>A child EditPart shall be moved inside this parent-EditPart.</li>
* <li>A new child EditPart shall be created inside this parent-EditPart
* (with the CreationTool).</li>
* </ul>
*/
public EditPolicy createShapeForbidLayoutEditPolicy();
/**
* Creates an EditPolicy, where the Layout of the EditParts is important:
* they must have an XYLayout. It assumes, that this EditPart is a parent,
* whose children can be added/deleted/moved. It creates commands for the
* following requests:
* <ul>
* <li>A child EditPart shall be moved from another parent-EditPart into
* this parent-EditPart.</li>
* <li>A child EditPart shall be moved inside this parent-EditPart (resized
* or changed XY-position).</li>
* <li>A new child EditPart shall be created inside this parent-EditPart
* (with the CreationTool).</li>
* </ul>
*/
public EditPolicy createShapeXYLayoutEditPolicy();
/**
* Creates an EditPolicy, which gives feedback for if an EditPart is
* selected. It does not create any commands. It can be used for example to
* do the following:
* <ul>
* <li>Highlight the selected EditPart.</li>
* </ul>
*/
public EditPolicy createShapeHighlightEditPolicy();
// ============== EditPolicies for Connection EditParts ==================
/**
* Creates an EditPolicy give feedback for if a ConnectionEditPart is
* selected. This includes the connection-handles at the start/end of the
* connection. It does not create any commands. It can be used for example
* to do the following:
* <ul>
* <li>Create selection-handles at the beginning/end of the selected
* ConnectionEditPart.</li>
* <li>Highlight the selected ConnectionEditPart.</li>
* </ul>
*/
public EditPolicy createConnectionHighlightEditPolicy();
// ================= EditPolicies for any EditParts ======================
/**
* Creates an EditPolicy to handle direct-editing of EditParts. Typically
* not the complete EditPart shall be edited directly, but only one control
* of it (e.g. one Label). For this control an appropriate CellEditor would
* usually be shown. It creates commands for the following requests:
* <ul>
* <li>An EditPart shall be edited directly.</li>
* </ul>
*/
public EditPolicy createDirectEditPolicy();
/**
* Creates an EditPolicy to handle the deletion of EditParts. It creates
* commands for the following requests:
* <ul>
* <li>An EditPart shall be deleted.</li>
* </ul>
*/
public EditPolicy createModelObjectDeleteEditPolicy(IConfigurationProvider configurationProvider);
public EditPolicy createConnectionEditPolicy();
public EditPolicy createConnectionBendpointsEditPolicy();
public EditPolicy createConnectionDeleteEditPolicy(IConfigurationProvider configurationProvider);
public EditPolicy createShapeHoverEditPolicy();
}