| /***************************************************************************** |
| * 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(); |
| } |
| } |