// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.core.ui.editor.notes;
import java.util.List;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
import org.talend.core.model.process.EComponentCategory;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.core.model.process.Element;
import org.talend.core.model.process.IProcess2;
import org.talend.designer.core.i18n.Messages;
import org.talend.designer.core.model.components.EParameterName;
import org.talend.designer.core.model.components.ElementParameter;
import org.talend.designer.core.ui.editor.TalendEditor;
/**
*
*/
public class Note extends Element {
private Point location;
private Dimension size = new Dimension(TalendEditor.GRID_SIZE * 3, TalendEditor.GRID_SIZE * 2);
private boolean opaque = true;
private String text = Messages.getString("Note.DefaultText"); //$NON-NLS-1$
private boolean readOnly;
private List elementParameter;
private String noteColor = "255;255;203"; //$NON-NLS-1$
private String textColor = "0;0;0"; //$NON-NLS-1$
private String noteLineColor = "237;201;122"; //$NON-NLS-1$
private IProcess2 process;
/**
* tang Note constructor comment.
*/
public Note() {
super();
ElementParameter param = new ElementParameter(this);
param = new ElementParameter(this);
param.setName(EParameterName.NOTE_COLOR.getName());
param.setValue(noteColor); // default note color
param.setDisplayName(EParameterName.NOTE_COLOR.getDisplayName());
param.setFieldType(EParameterFieldType.COLOR);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(2);
param.setReadOnly(false);
param.setRequired(true);
param.setShow(true);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.NOTETXT_COLOR.getName());
param.setValue(textColor); // default note color
param.setDisplayName(EParameterName.NOTETXT_COLOR.getDisplayName());
param.setFieldType(EParameterFieldType.COLOR);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(3);
param.setReadOnly(false);
param.setRequired(true);
param.setShow(true);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.NOTETXT_LEFT.getName());
param.setValue(false);
param.setDisplayName(EParameterName.NOTETXT_LEFT.getDisplayName());
param.setFieldType(EParameterFieldType.RADIO);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.NOTETXT_RIGHT.getName());
param.setValue(false);
param.setDisplayName(EParameterName.NOTETXT_RIGHT.getDisplayName());
param.setFieldType(EParameterFieldType.RADIO);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.NOTETXT_CENTER.getName());
param.setValue(true);
param.setDisplayName(EParameterName.NOTETXT_CENTER.getDisplayName());
param.setFieldType(EParameterFieldType.RADIO);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.NOTELABEL_CENTER.getName());
param.setValue(true);
param.setDisplayName(EParameterName.NOTELABEL_CENTER.getDisplayName());
param.setFieldType(EParameterFieldType.RADIO);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.NOTETXT_TOP.getName());
param.setValue(false);
param.setDisplayName(EParameterName.NOTETXT_TOP.getDisplayName());
param.setFieldType(EParameterFieldType.RADIO);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.NOTETXT_BOTTOM.getName());
param.setValue(false);
param.setDisplayName(EParameterName.NOTETXT_BOTTOM.getDisplayName());
param.setFieldType(EParameterFieldType.RADIO);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.NOTE_FONT.getName());
param.setValue("Time New Roman"); //$NON-NLS-1$
param.setDisplayName(EParameterName.NOTE_FONT.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.FONT_SIZE.getName());
param.setValue("10"); //$NON-NLS-1$
param.setDisplayName(EParameterName.FONT_SIZE.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.FONT_BOLD.getName());
param.setValue(false);
param.setDisplayName(EParameterName.FONT_BOLD.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.FONT_ITALIC.getName());
param.setValue(false);
param.setDisplayName(EParameterName.FONT_ITALIC.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
param = new ElementParameter(this);
param.setName(EParameterName.NOTE_LINECOLOR.getName());
param.setValue(noteLineColor);
param.setDisplayName(EParameterName.FONT_ITALIC.getDisplayName());
param.setFieldType(EParameterFieldType.COLOR);
param.setCategory(EComponentCategory.BASIC);
param.setNumRow(4);
addElementParameter(param);
}
@Override
public String getElementName() {
return null;
}
public boolean isReadOnly() {
return readOnly;
}
public void setReadOnly(boolean readOnly) {
this.readOnly = readOnly;
}
public Point getLocation() {
return location;
}
public void setLocation(Point location) {
this.location = location;
firePropertyChange("", null, location); //$NON-NLS-1$
}
public Dimension getSize() {
return size;
}
public void setSize(Dimension size) {
this.size = size;
firePropertyChange("", null, size); //$NON-NLS-1$
}
public String getText() {
return text;
}
public void setText(String text) {
// autoAdjustFigureSize(text);
this.text = text;
firePropertyChange("", null, text); //$NON-NLS-1$
}
/**
* It is used for auto-adjust the size of fingure to adapt the text modification.
*
* @param text
*/
private void autoAdjustFigureSize(String text) {
int length = text.length() - this.text.length();
int adjustLength = TalendEditor.GRID_SIZE / 4;
if (length < 0) {
adjustLength = -TalendEditor.GRID_SIZE / 4;
}
if (length != 0 && text.length() != 0) {
this.size.width = this.size.width + length * 3 + adjustLength;
} else {
this.size = new Dimension(TalendEditor.GRID_SIZE * 3, TalendEditor.GRID_SIZE * 2);
}
}
public boolean isOpaque() {
return opaque;
}
public void setOpaque(boolean opaque) {
this.opaque = opaque;
firePropertyChange("", null, opaque); //$NON-NLS-1$
}
/**
* Getter for elementParameter.
*
* @return the elementParameter
*/
public List getElementParameter() {
return this.elementParameter;
}
/**
* Sets the elementParameter.
*
* @param elementParameter the elementParameter to set
*/
public void setElementParameter(List elementParameter) {
this.elementParameter = elementParameter;
}
/**
* Getter for process.
*
* @return the process
*/
// public IProcess2 getProcess() {
// return this.process;
// }
public void refresh() {
firePropertyChange("", null, ""); //$NON-NLS-1$ //$NON-NLS-2$
}
public IProcess2 getProcess() {
return this.process;
}
public void setProcess(IProcess2 process) {
this.process = process;
}
}