use of com.archimatetool.model.IDiagramModelArchimateConnection in project archi by archimatetool.
the class XMLModelExporter method writeConnection.
/**
* Write a connection
*/
Element writeConnection(IDiagramModelConnection connection, Element parentElement) {
Element connectionElement = new Element(ELEMENT_CONNECTION, ARCHIMATE3_NAMESPACE);
parentElement.addContent(connectionElement);
// ID
connectionElement.setAttribute(ATTRIBUTE_IDENTIFIER, checkID(connection));
// ArchiMate connection has a Relationship ref
if (connection instanceof IDiagramModelArchimateConnection) {
connectionElement.setAttribute(ATTRIBUTE_RELATIONSHIPREF, checkID(((IDiagramModelArchimateConnection) connection).getArchimateRelationship()));
// Type
connectionElement.setAttribute(ATTRIBUTE_TYPE, ATTRIBUTE_RELATIONSHIP_TYPE, XSI_NAMESPACE);
} else {
// Type
connectionElement.setAttribute(ATTRIBUTE_TYPE, ATTRIBUTE_LINE_TYPE, XSI_NAMESPACE);
}
// Source
connectionElement.setAttribute(ATTRIBUTE_SOURCE, checkID(connection.getSource()));
// Target
connectionElement.setAttribute(ATTRIBUTE_TARGET, checkID(connection.getTarget()));
// Style
writeConnectionStyle(connection, connectionElement);
// Bendpoints
writeConnectionBendpoints(connection, connectionElement);
return connectionElement;
}
use of com.archimatetool.model.IDiagramModelArchimateConnection in project archi by archimatetool.
the class FormatPainterTool method createCommand.
protected CompoundCommand createCommand(PaintFormat pf, IDiagramModelComponent targetComponent) {
CompoundCommand result = new CompoundCommand(Messages.FormatPainterTool_0);
// IFontAttribute
if (pf.getSourceComponent() instanceof IFontAttribute && targetComponent instanceof IFontAttribute) {
IFontAttribute source = (IFontAttribute) pf.getSourceComponent();
IFontAttribute target = (IFontAttribute) targetComponent;
Command cmd = new FontStyleCommand(target, source.getFont());
if (cmd.canExecute()) {
result.add(cmd);
}
cmd = new FontColorCommand(target, source.getFontColor());
if (cmd.canExecute()) {
result.add(cmd);
}
}
// ILineObject
if (pf.getSourceComponent() instanceof ILineObject && targetComponent instanceof ILineObject) {
ILineObject source = (ILineObject) pf.getSourceComponent();
ILineObject target = (ILineObject) targetComponent;
Command cmd = new LineColorCommand(target, source.getLineColor());
if (cmd.canExecute()) {
result.add(cmd);
}
cmd = new LineWidthCommand(target, source.getLineWidth());
if (cmd.canExecute()) {
result.add(cmd);
}
}
// IBorderObject
if (pf.getSourceComponent() instanceof IBorderObject && targetComponent instanceof IBorderObject) {
IBorderObject source = (IBorderObject) pf.getSourceComponent();
IBorderObject target = (IBorderObject) targetComponent;
Command cmd = new BorderColorCommand(target, source.getBorderColor());
if (cmd.canExecute()) {
result.add(cmd);
}
}
// ITextPosition
if (pf.getSourceComponent() instanceof ITextPosition && targetComponent instanceof ITextPosition) {
ITextPosition source = (ITextPosition) pf.getSourceComponent();
ITextPosition target = (ITextPosition) targetComponent;
Command cmd = new TextPositionCommand(target, source.getTextPosition());
if (cmd.canExecute()) {
result.add(cmd);
}
}
// ITextAlignment
if (pf.getSourceComponent() instanceof ITextAlignment && targetComponent instanceof ITextAlignment) {
ITextAlignment source = (ITextAlignment) pf.getSourceComponent();
ITextAlignment target = (ITextAlignment) targetComponent;
Command cmd = new TextAlignmentCommand(target, source.getTextAlignment());
if (cmd.canExecute()) {
result.add(cmd);
}
}
// IDiagramModelObject
if (pf.getSourceComponent() instanceof IDiagramModelObject && targetComponent instanceof IDiagramModelObject) {
IDiagramModelObject source = (IDiagramModelObject) pf.getSourceComponent();
IDiagramModelObject target = (IDiagramModelObject) targetComponent;
// Source fill colour is null which is "default"
String fillColorString = source.getFillColor();
if (fillColorString == null) {
fillColorString = ColorFactory.convertColorToString(ColorFactory.getDefaultFillColor(source));
}
Command cmd = new FillColorCommand(target, fillColorString);
if (cmd.canExecute()) {
result.add(cmd);
}
// Alpha fill opacity
cmd = new DiagramModelObjectAlphaCommand(target, source.getAlpha());
if (cmd.canExecute()) {
result.add(cmd);
}
// Alpha line opacity
cmd = new DiagramModelObjectOutlineAlphaCommand(target, source.getLineAlpha());
if (cmd.canExecute()) {
result.add(cmd);
}
// Gradient
// $NON-NLS-1$
cmd = new FeatureCommand("", target, IDiagramModelObject.FEATURE_GRADIENT, source.getGradient(), IDiagramModelObject.FEATURE_GRADIENT_DEFAULT);
if (cmd.canExecute()) {
result.add(cmd);
}
// Icon Visibility, but paste only if the target object has an icon
IObjectUIProvider provider = ObjectUIFactory.INSTANCE.getProvider(target);
if (provider instanceof IGraphicalObjectUIProvider && ((IGraphicalObjectUIProvider) provider).hasIcon()) {
// $NON-NLS-1$
cmd = new FeatureCommand("", target, IDiagramModelObject.FEATURE_ICON_VISIBLE, source.getIconVisibleState(), IDiagramModelObject.FEATURE_ICON_VISIBLE_DEFAULT);
if (cmd.canExecute()) {
result.add(cmd);
}
}
}
// Archimate objects
if (pf.getSourceComponent() instanceof IDiagramModelArchimateObject && targetComponent instanceof IDiagramModelArchimateObject) {
IDiagramModelArchimateObject source = (IDiagramModelArchimateObject) pf.getSourceComponent();
IDiagramModelArchimateObject target = (IDiagramModelArchimateObject) targetComponent;
// Image Source
Command cmd = new // $NON-NLS-1$
FeatureCommand(// $NON-NLS-1$
"", // $NON-NLS-1$
target, // $NON-NLS-1$
IDiagramModelArchimateObject.FEATURE_IMAGE_SOURCE, source.getImageSource(), IDiagramModelArchimateObject.FEATURE_IMAGE_SOURCE_DEFAULT);
if (cmd.canExecute()) {
result.add(cmd);
}
}
// IDiagramModelConnection
if (pf.getSourceComponent() instanceof IDiagramModelConnection && targetComponent instanceof IDiagramModelConnection) {
IDiagramModelConnection source = (IDiagramModelConnection) pf.getSourceComponent();
IDiagramModelConnection target = (IDiagramModelConnection) targetComponent;
// Connection text position
Command cmd = new ConnectionTextPositionCommand(target, source.getTextPosition());
if (cmd.canExecute()) {
result.add(cmd);
}
// If a non-Archimate connection, connection line type
if (!(target instanceof IDiagramModelArchimateConnection)) {
cmd = new ConnectionLineTypeCommand(target, source.getType());
if (cmd.canExecute()) {
result.add(cmd);
}
}
}
// IIconic
if (pf.getSourceComponent() instanceof IIconic && targetComponent instanceof IIconic) {
IIconic source = (IIconic) pf.getSourceComponent();
IIconic target = (IIconic) targetComponent;
// If we have an image path and the source and target models are different, copy the image bytes
String imagePath = source.getImagePath();
if (imagePath != null && source.getArchimateModel() != target.getArchimateModel()) {
IArchiveManager sourceArchiveManager = (IArchiveManager) source.getAdapter(IArchiveManager.class);
IArchiveManager targetArchiveManager = (IArchiveManager) target.getAdapter(IArchiveManager.class);
try {
imagePath = targetArchiveManager.copyImageBytes(sourceArchiveManager, imagePath);
} catch (IOException ex) {
ex.printStackTrace();
// $NON-NLS-1$
Logger.logError("Could not copy image bytes when copying and pasting objects.", ex);
}
}
// $NON-NLS-1$
Command cmd = new EObjectFeatureCommand("", target, IArchimatePackage.Literals.DIAGRAM_MODEL_IMAGE_PROVIDER__IMAGE_PATH, imagePath);
if (cmd.canExecute()) {
result.add(cmd);
}
// Image position
// $NON-NLS-1$
cmd = new EObjectFeatureCommand("", target, IArchimatePackage.Literals.ICONIC__IMAGE_POSITION, source.getImagePosition());
if (cmd.canExecute()) {
result.add(cmd);
}
}
return result;
}
use of com.archimatetool.model.IDiagramModelArchimateConnection in project archi by archimatetool.
the class ModelChecker method checkAll.
/**
* @return True if OK, false if not OK
*/
public boolean checkAll() {
fErrorMessages = new ArrayList<String>();
// Don't model check
if (NO_MODELCHECK) {
return true;
}
// Instance count map
Map<IArchimateConcept, Integer> dmcMap = new HashMap<IArchimateConcept, Integer>();
// Iterate through all objects in the model...
for (Iterator<EObject> iter = fModel.eAllContents(); iter.hasNext(); ) {
EObject eObject = iter.next();
// Identifier
if (eObject instanceof IIdentifier) {
fErrorMessages.addAll(checkHasIdentifier((IIdentifier) eObject));
}
// Relation
if (eObject instanceof IArchimateRelationship) {
fErrorMessages.addAll(checkRelationship((IArchimateRelationship) eObject));
}
// Diagram Model Object
if (eObject instanceof IDiagramModelArchimateObject) {
fErrorMessages.addAll(checkDiagramModelArchimateObject((IDiagramModelArchimateObject) eObject));
incrementInstanceCount((IDiagramModelArchimateComponent) eObject, dmcMap);
}
// Diagram Model Connection
if (eObject instanceof IDiagramModelArchimateConnection) {
fErrorMessages.addAll(checkDiagramModelArchimateConnection((IDiagramModelArchimateConnection) eObject));
incrementInstanceCount((IDiagramModelArchimateConnection) eObject, dmcMap);
}
// Folder
if (eObject instanceof IFolder) {
fErrorMessages.addAll(checkFolder((IFolder) eObject));
}
// Profiles
if (eObject instanceof IProfiles) {
fErrorMessages.addAll(checkProfiles((IProfiles) eObject));
}
}
// Now check Diagram Model Object reference count
fErrorMessages.addAll(checkDiagramComponentInstanceCount(dmcMap));
return fErrorMessages.isEmpty();
}
use of com.archimatetool.model.IDiagramModelArchimateConnection in project archi by archimatetool.
the class DiagramModelUtilsTests method findDiagramModelConnectionsForRelation.
@Test
public void findDiagramModelConnectionsForRelation() {
IArchimateRelationship relationship = IArchimateFactory.eINSTANCE.createAssociationRelationship();
IDiagramModel diagramModel = tm.addNewArchimateDiagramModel();
// Should not be found
List<IDiagramModelArchimateConnection> list = DiagramModelUtils.findDiagramModelConnectionsForRelation(diagramModel, relationship);
assertTrue(list.isEmpty());
// Create various IDiagramModelArchimateObject objects
createDataForDiagramModelArchimateObjects(IArchimateFactory.eINSTANCE.createBusinessActor(), diagramModel);
// And make some connections using the relationship
createDataForDiagramModelConnections(relationship);
// Should be found in a dm
list = DiagramModelUtils.findDiagramModelConnectionsForRelation(diagramModel, relationship);
assertEquals(3, list.size());
}
use of com.archimatetool.model.IDiagramModelArchimateConnection in project archi by archimatetool.
the class ArchimateDiagramEditPartFactoryTests method testArchimateConnectionEditPart.
@Test
public void testArchimateConnectionEditPart() {
IArchimateRelationship relation = IArchimateFactory.eINSTANCE.createAccessRelationship();
IDiagramModelArchimateConnection conn = IArchimateFactory.eINSTANCE.createDiagramModelArchimateConnection();
conn.setArchimateRelationship(relation);
EditPart editPart = editPartFactory.createEditPart(null, conn);
assertTrue(editPart instanceof ArchimateRelationshipEditPart);
assertEquals(conn, editPart.getModel());
}
Aggregations