/*
* Copyright (c) 2011, 2012, 2016 Eike Stepper (Berlin, Germany) and others.
* 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:
* Martin Fluegge - initial API and implementation
*/
package org.eclipse.emf.cdo.dawn.gmf.appearance.impl;
import org.eclipse.emf.cdo.dawn.gmf.appearance.DawnAppearancer;
import org.eclipse.emf.cdo.dawn.gmf.appearance.DawnEditPartStylizer;
import org.eclipse.emf.cdo.dawn.spi.DawnState;
import org.eclipse.emf.cdo.dawn.ui.DawnColorConstants;
import org.eclipse.emf.workspace.AbstractEMFOperation;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.commands.Command;
import org.eclipse.gmf.runtime.common.core.util.StringStatics;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.ui.requests.ChangePropertyValueRequest;
import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities;
import org.eclipse.gmf.runtime.emf.core.util.PackageUtil;
import org.eclipse.gmf.runtime.notation.NotationPackage;
import org.eclipse.swt.graphics.Color;
/**
* @author Martin Fluegge
* @since 2.0
*/
public class DawnBasicConnectionEditPartStylizerImpl extends DawnEditPartStylizer
{
/**
* @since 2.0
*/
@Override
public void setDefault(EditPart editPart)
{
setEdge(editPart, DawnColorConstants.COLOR_NO_CONFLICT);
}
/**
* @since 2.0
*/
@Override
public void setConflicted(EditPart editPart, int type)
{
// Color color = DawnColorConstants.COLOR_DELETE_CONFLICT;
Color color = getForegroundColor(editPart, DawnState.CONFLICT);
setEdge(editPart, color);
}
/**
* @since 2.0
*/
private void setEdge(EditPart editPart, Color color)
{
ChangePropertyValueRequest request = new ChangePropertyValueRequest(StringStatics.BLANK,
PackageUtil.getID(NotationPackage.eINSTANCE.getLineStyle_LineColor()), FigureUtilities.colorToInteger(color));
final Command command = editPart.getCommand(request);
AbstractEMFOperation operation = new AbstractEMFOperation(((IGraphicalEditPart)editPart).getEditingDomain(), StringStatics.BLANK, null)
{
@Override
protected IStatus doExecute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException
{
command.execute();
return Status.OK_STATUS;
}
};
try
{
operation.execute(new NullProgressMonitor(), null);
}
catch (ExecutionException e)
{
}
editPart.refresh();
editPart.getRoot().refresh();
}
/**
* @since 2.0
*/
@Override
public void setLocked(EditPart editPart, int type)
{
Color color = null;
switch (type)
{
case DawnAppearancer.TYPE_LOCKED_LOCALLY:
{
color = getBackgroundColor(editPart, DawnState.LOCKED_LOCALLY);
break;
}
case DawnAppearancer.TYPE_LOCKED_GLOBALLY:
{
color = getBackgroundColor(editPart, DawnState.LOCKED_REMOTELY);
break;
}
default:
break;
}
if (color != null)
{
setEdge(editPart, color);
}
}
}