/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.diagram.ui.notation.uml.figure;
import org.eclipse.draw2d.ImageFigure;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.diagram.ui.DiagramUiPlugin;
import org.teiid.designer.diagram.ui.PluginConstants;
import org.teiid.designer.diagram.ui.figure.LabeledRectangleFigure;
import org.teiid.designer.diagram.ui.notation.uml.model.UmlAttributeNode;
import org.teiid.designer.diagram.ui.util.colors.ColorPalette;
import org.teiid.designer.diagram.ui.util.directedit.DirectEditFigure;
import org.teiid.designer.ui.viewsupport.DatatypeUtilities;
/**
* UmlAttributeFigure
*
* @since 8.0
*/
public class UmlAttributeFigure extends LabeledRectangleFigure implements DirectEditFigure {
private ImageFigure errorIcon;
private ImageFigure warningIcon;
private ImageFigure enumIcon;
/**
* Construct an instance of UmlAttributeFigure.
*
*/
public UmlAttributeFigure(String labelString, ColorPalette colorPalette) {
super(labelString, true, colorPalette);
showSelected(false);
}
public UmlAttributeFigure(String labelString, Image icon, ColorPalette colorPalette) {
super(labelString, icon, true, colorPalette);
showSelected(false);
}
public UmlAttributeFigure(String labelString, Font newFont, ColorPalette colorPalette) {
super(labelString, newFont, true, colorPalette);
showSelected(false);
}
/*
* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.figure.DiagramFigure#layoutFigure()
*/
@Override
public void layoutFigure() {
// Default does nothing
}
/*
* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.figure.DiagramFigure#activate()
*/
@Override
public void activate() {
// Default implementation does nothing;
}
/*
* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.figure.DiagramFigure#deactivate()
*/
@Override
public void deactivate() {
// Default implementation does nothing;
}
/*
* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.figure.DiagramFigure#refreshFont()
*/
@Override
public void refreshFont() {
super.refreshFont();
}
/*
* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.util.directedit.DirectEditFigure#getLabelFigure()
*/
@Override
public Label getLabelFigure() {
return this.getLabel();
}
/*
* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.figure.DiagramFigure#updateForName(java.lang.String)
*/
@Override
public void updateForName(String newName ) {
super.updateForName(newName);
// super.resize();
}
/*
* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.figure.DiagramFigure#updateForName(java.lang.String, org.eclipse.swt.graphics.Image)
*/
@Override
public void updateForName(String newName, Image icon) {
super.updateForName(newName);
super.setIcon(icon);
}
/*
* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.figure.DiagramFigure#updateForError(boolean)
*/
@Override
public void updateForError(boolean hasErrors) {
if( hasErrors ) {
if( errorIcon == null ) {
errorIcon = new ImageFigure(DiagramUiPlugin.getDefault().getImage(PluginConstants.Images.ERROR_ICON));
if( errorIcon != null ) {
this.add(errorIcon);
errorIcon.setLocation(new Point(2, 2));
errorIcon.setSize(errorIcon.getPreferredSize());
}
}
} else if( errorIcon != null ) {
this.remove(errorIcon);
errorIcon = null;
}
}
/*
* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.figure.DiagramFigure#updateForWarning(boolean)
*/
@Override
public void updateForWarning(boolean hasWarnings) {
if( hasWarnings ) {
if( warningIcon == null ) {
warningIcon = new ImageFigure(DiagramUiPlugin.getDefault().getImage(PluginConstants.Images.WARNING_ICON));
if( warningIcon != null ) {
this.add(warningIcon);
warningIcon.setLocation(new Point(4, 4));
warningIcon.setSize(warningIcon.getPreferredSize());
}
}
} else if( warningIcon != null ) {
this.remove(warningIcon);
warningIcon = null;
}
}
/**
* Decorate the figure as necessary for the attribute's datatype
*/
public void updateForType(UmlAttributeNode node) {
EObject type = DatatypeUtilities.getSqlColumnDatatype(node.getModelObject());
if ( type != null && ModelerCore.getDatatypeManager(type, true).isEnumeration(type) ) {
if( enumIcon == null ) {
enumIcon = new ImageFigure(DiagramUiPlugin.getDefault().getImage(PluginConstants.Images.ENUM_ICON));
if( enumIcon != null ) {
this.add(enumIcon);
enumIcon.setLocation(new Point(12, 9));
enumIcon.setSize(enumIcon.getPreferredSize());
}
}
} else if( enumIcon != null ) {
this.remove(enumIcon);
enumIcon = null;
}
}
/*
* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.figure.DiagramFigure#showSelected(boolean)
*/
@Override
public void showSelected(boolean selected) {
if( selected )
this.setBackgroundColor(getColor(ColorPalette.SELECTION_COLOR_ID));
else
this.setBackgroundColor(getColor(ColorPalette.SECONDARY_BKGD_COLOR_ID));
}
}