/*
* Copyright 2005 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.eclipse.flow.common.view.datatype.editor.impl;
import java.util.ArrayList;
import java.util.List;
import org.drools.eclipse.flow.common.view.datatype.editor.DataTypeEditor;
import org.drools.eclipse.flow.common.view.datatype.editor.Editor;
import org.drools.core.process.core.datatype.DataType;
import org.drools.core.process.core.datatype.impl.type.ObjectDataType;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
/**
* Default empty editor.
*/
public class ObjectDataTypeEditor extends Composite implements Editor, DataTypeEditor {
private ObjectDataType dataType;
private Object value;
private Label label;
private Text text;
private List<DataTypeEditor.DataTypeListener> listeners = new ArrayList<DataTypeEditor.DataTypeListener>();
public ObjectDataTypeEditor(Composite parent) {
super(parent, SWT.NONE);
setLayout(new FillLayout());
label = new Label(this, SWT.NONE);
label.setText("ClassName");
text = new Text(this, SWT.NONE);
text.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
notifyListeners();
}
});
}
public DataType getDataType() {
dataType.setClassName(text.getText());
return dataType;
}
public void setDataType(DataType dataType) {
this.dataType = (ObjectDataType) dataType;
String className = this.dataType.getClassName();
text.setText(className == null ? "" : className);
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public void reset() {
text.setText("");
}
public void addListener(DataTypeEditor.DataTypeListener listener) {
listeners.add(listener);
}
public void removeListener(DataTypeEditor.DataTypeListener listener) {
listeners.remove(listener);
}
private void notifyListeners() {
for (DataTypeEditor.DataTypeListener listener: listeners) {
listener.dataTypeChanged(getDataType());
}
}
public void setBackground(Color color) {
super.setBackground(color);
label.setBackground(color);
}
}