blob: 6bf11d919c0eb9f82da42d0d324301dde70ea397 [file] [log] [blame]
/*****************************************************************************
* Copyright (c) 2013, 2017 CEA LIST.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* CEA LIST - Initial API and implementation
*****************************************************************************/
package org.eclipse.papyrus.cdo.internal.ui.decorators;
import org.eclipse.emf.cdo.dawn.gmf.appearance.DawnAppearancer;
import org.eclipse.emf.cdo.dawn.spi.DawnState;
import org.eclipse.emf.cdo.dawn.ui.stylizer.DawnDefaultElementStylizer;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.papyrus.cdo.internal.ui.Activator;
import org.eclipse.papyrus.cdo.internal.ui.SharedImages;
import org.eclipse.swt.graphics.Image;
/**
* This is the PapyrusNodeEditPartStylizer type. Enjoy.
*/
public class PapyrusElementStylizer
extends DawnDefaultElementStylizer {
public PapyrusElementStylizer() {
super();
}
@Override
public Image getImage(Object element, DawnState state) {
Image result;
switch (state) {
case LOCKED_LOCALLY:
result = SharedImages
.getImage(Activator.ICON_SELF_LOCKED_OVERLAY16);
break;
case LOCKED_REMOTELY:
result = SharedImages
.getImage(Activator.ICON_OTHER_LOCKED_OVERLAY16);
break;
case CONFLICT:
result = SharedImages
.getImage(Activator.ICON_CONFLICTED_OVERLAY16);
break;
default:
result = super.getImage(element, state);
break;
}
return result;
}
@Override
public void setDefault(Object element) {
if (element instanceof EObject) {
EObject eObject = (EObject) element;
setState(eObject, DawnState.CLEAN);
}
}
@Override
public void setConflicted(Object element, final int type) {
if (element instanceof EObject) {
EObject eObject = (EObject) element;
setState(eObject, DawnState.CONFLICT);
}
}
@Override
public void setLocked(Object element, int type) {
if (element instanceof EObject) {
EObject eObject = (EObject) element;
DawnState state;
switch (type) {
case DawnAppearancer.TYPE_LOCKED_GLOBALLY:
state = DawnState.LOCKED_REMOTELY;
break;
case DawnAppearancer.TYPE_LOCKED_LOCALLY:
state = DawnState.LOCKED_LOCALLY;
break;
default:
state = DawnState.LOCKED_REMOTELY;
break;
}
setState(eObject, state);
}
}
protected void setState(EObject object, DawnState state) {
CDOStateAdapter.setState(object, state);
CDOStateLabelDecorator.fireLabelUpdates();
}
}