blob: f94b00ad1bfcc28bb9456ce4db10bb2e653e4f0b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2012 Montages A.G.
* 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:
* Guillaume Hillairet (Montages A.G.) : initial implementation
*******************************************************************************/
package org.eclipse.gmf.internal.bridge.genmodel;
import org.eclipse.gmf.codegen.gmfgen.GenChildNode;
import org.eclipse.gmf.codegen.gmfgen.GenCompartment;
import org.eclipse.gmf.codegen.gmfgen.GenDiagram;
import org.eclipse.gmf.codegen.gmfgen.GenLink;
import org.eclipse.gmf.codegen.gmfgen.GenLinkLabel;
import org.eclipse.gmf.codegen.gmfgen.GenNodeLabel;
import org.eclipse.gmf.codegen.gmfgen.GenTopLevelNode;
import org.eclipse.gmf.codegen.gmfgen.ToolGroup;
import org.eclipse.gmf.internal.bridge.NaiveIdentifierDispenser;
import org.eclipse.gmf.internal.bridge.VisualIdentifierDispenser;
import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;
import org.eclipse.m2m.qvt.oml.blackbox.java.Operation.Kind;
/**
* {@link VisualIdentifierDispenserFacade} is a QVTO black box providing access to
* a {@link VisualIdentifierDispenser}.
*
*/
public class VisualIdentifierDispenserFacade {
public VisualIdentifierDispenserFacade() {}
@Operation(contextual = true, kind = Kind.QUERY)
public int getVisualID(Object self) {
VisualIdentifierDispenser dispenser = Provider.getDisenser();
assert dispenser != null;
int visualID = -1;
if (self instanceof GenDiagram)
visualID = dispenser.get((GenDiagram) self);
else if (self instanceof GenTopLevelNode)
visualID = dispenser.get((GenTopLevelNode) self);
else if (self instanceof GenChildNode)
visualID = dispenser.get((GenChildNode) self);
else if (self instanceof GenCompartment)
visualID = dispenser.get((GenCompartment) self);
else if (self instanceof GenNodeLabel)
visualID = dispenser.get((GenNodeLabel) self);
else if (self instanceof GenLink)
visualID = dispenser.get((GenLink) self);
else if (self instanceof GenLinkLabel)
visualID = dispenser.get((GenLinkLabel) self);
else if (self instanceof ToolGroup)
visualID = dispenser.get((ToolGroup) self);
return visualID;
}
/**
* {@link Provider} is a singleton holding the current visual identifier dispenser.
*/
public static final class Provider {
private static VisualIdentifierDispenser dispenser;
public static VisualIdentifierDispenser getDisenser() {
if (dispenser == null) {
dispenser = new NaiveIdentifierDispenser();
}
return dispenser;
}
public static void setDispenser(VisualIdentifierDispenser dispenser) {
Provider.dispenser = dispenser;
}
}
}