/*******************************************************************************
* Copyright (c) 2008 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.editparts;
import java.beans.PropertyChangeEvent;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FigureUtilities;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.jboss.tools.smooks.SmooksModelUtils;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import org.jboss.tools.smooks.configuration.editors.GraphicsConstants;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
import org.jboss.tools.smooks.gef.tree.editparts.TreeContainerEditPart;
import org.jboss.tools.smooks.gef.tree.figures.TreeContainerFigure;
import org.jboss.tools.smooks.gef.tree.model.TreeContainerModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
import org.jboss.tools.smooks.graphical.editors.model.InputDataContianerModel;
/**
* @author Dart
*
*/
public class InputDataContainerEditPart extends TreeContainerEditPart {
private String inputType = null;
@Override
public void propertyChange(PropertyChangeEvent evt) {
super.propertyChange(evt);
}
@Override
protected String generateFigureID() {
return SmooksGraphUtil.generateFigureID((TreeNodeModel) getModel());
}
/*
* (non-Javadoc)
*
* @see
* org.jboss.tools.smooks.gef.tree.editparts.TreeContainerEditPart#createFigure
* ()
*/
@Override
protected IFigure createFigure() {
final int zwidth = 20;
IFigure figure = new TreeContainerFigure((TreeContainerModel) getModel()) {
/*
* (non-Javadoc)
*
* @seeorg.jboss.tools.smooks.gef.tree.figures.TreeContainerFigure#
* addChildrenFigures()
*/
@Override
protected void addChildrenFigures() {
IFigure headerFigure1 = new Figure() {
@Override
protected void paintFigure(Graphics graphics) {
super.paintFigure(graphics);
}
@Override
public Dimension getPreferredSize(int hint, int hint2) {
Dimension size = super.getPreferredSize(hint, hint2);
int width = Math.max(size.width, 100);
return new Dimension(width, 25);
}
};
this.add(headerFigure1);
super.addChildrenFigures();
}
/*
* (non-Javadoc)
*
* @seeorg.jboss.tools.smooks.gef.tree.figures.TreeContainerFigure#
* drawHeaderFigure(org.eclipse.draw2d.Graphics)
*/
@Override
protected void drawHeaderFigure(Graphics graphics) {
// TODO Auto-generated method stub
// super.drawHeaderFigure(graphics);
}
/*
* (non-Javadoc)
*
* @seeorg.jboss.tools.smooks.gef.tree.figures.TreeContainerFigure#
* paintBorder(org.eclipse.draw2d.Graphics)
*/
@Override
protected void paintBorder(Graphics graphics) {
// super.paintBorder(graphics);
if (isSelected() || isFocus()) {
graphics.setForegroundColor(ColorConstants.blue);
graphics.setLineStyle(SWT.LINE_DOT);
} else {
graphics.setForegroundColor(FigureUtilities.darker(ColorConstants.orange));
graphics.setLineStyle(SWT.LINE_SOLID);
}
Point p2 = new Point();
p2.setLocation(getBounds().getTopLeft().x, getBounds().getTopLeft().y);
Point p1 = new Point();
p1.setLocation(getBounds().getTopRight().x - zwidth, getBounds().getTopRight().y);
graphics.drawLine(p1, p2);
Point p3 = new Point();
p3.setLocation(getBounds().getBottomLeft().x, getBounds().getBottomLeft().y - 1);
graphics.drawLine(p2, p3);
Point p4 = new Point();
p4.setLocation(getBounds().getBottomRight().x - 1, getBounds().getBottomRight().y - 1);
graphics.drawLine(p4, p3);
Point p5 = new Point();
p5.setLocation(getBounds().getTopRight().x - 1, getBounds().getTopRight().y + zwidth - 1);
graphics.drawLine(p4, p5);
graphics.drawLine(p1, p5);
Point p6 = new Point();
p6.setLocation(p1.x, p5.y);
graphics.drawLine(p5, p6);
graphics.drawLine(p1, p6);
}
/*
* (non-Javadoc)
*
* @seeorg.jboss.tools.smooks.gef.tree.figures.TreeContainerFigure#
* paintFigure(org.eclipse.draw2d.Graphics)
*/
@Override
protected void paintFigure(Graphics graphics) {
super.paintFigure(graphics);
}
};
return figure;
}
/*
* (non-Javadoc)
*
* @seeorg.jboss.tools.smooks.gef.tree.editparts.TreeContainerEditPart#
* refreshVisuals()
*/
@Override
protected void refreshVisuals() {
InputDataContianerModel model = (InputDataContianerModel) getModel();
ISmooksModelProvider provider = model.getSmooksModelProvider();
if (provider != null) {
Image image = SmooksConfigurationActivator.getDefault().getImageRegistry().get(
GraphicsConstants.IMAGE_INPUT_DATA_HEADER);
String text = Messages.InputDataContainerEditPart_Input_Model;
if (inputType != null) {
if (inputType.equals(provider.getInputType())) {
super.refreshVisuals();
return;
}
}
inputType = provider.getInputType();
if (inputType.equals(SmooksModelUtils.INPUT_TYPE_JAVA)) {
image = SmooksConfigurationActivator.getDefault().getImageRegistry().get(
GraphicsConstants.IMAGE_JAVA_FILE);
text = Messages.InputDataContainerEditPart_Java_Input_Model;
}
if (inputType.equals(SmooksModelUtils.INPUT_TYPE_XML)) {
image = SmooksConfigurationActivator.getDefault().getImageRegistry().get(
GraphicsConstants.IMAGE_XML_FILE);
text = Messages.InputDataContainerEditPart_XML_Input_Model;
}
if (inputType.equals(SmooksModelUtils.INPUT_TYPE_XSD)) {
image = SmooksConfigurationActivator.getDefault().getImageRegistry().get(
GraphicsConstants.IMAGE_XSD_FILE);
text = Messages.InputDataContainerEditPart_XSD_Input_Model;
}
if (inputType.equals(SmooksModelUtils.INPUT_TYPE_CSV)) {
text = Messages.InputDataContainerEditPart_CSV_Input_Model;
}
if (inputType.equals(SmooksModelUtils.INPUT_TYPE_EDI_1_1)) {
text = Messages.InputDataContainerEditPart_EDI_Input_Model;
}
if (inputType.equals(SmooksModelUtils.INPUT_TYPE_JSON_1_1)) {
text = Messages.InputDataContainerEditPart_JSON_Input_Model;
}
TreeContainerFigure figure = (TreeContainerFigure) getFigure();
figure.getLabel().setTextAlignment(Label.LEFT);
figure.setText(text);
figure.setIcon(image);
}
super.refreshVisuals();
}
}