/**
* This file is part of Archiv-Editor.
*
* The software Archiv-Editor serves as a client user interface for working with
* the Person Data Repository. See: pdr.bbaw.de
*
* The software Archiv-Editor was developed at the Berlin-Brandenburg Academy
* of Sciences and Humanities, Jägerstr. 22/23, D-10117 Berlin.
* www.bbaw.de
*
* Copyright (C) 2010-2013 Berlin-Brandenburg Academy
* of Sciences and Humanities
*
* The software Archiv-Editor was developed by @author: Christoph Plutte.
*
* Archiv-Editor is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Archiv-Editor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Archiv-Editor.
* If not, see <http://www.gnu.org/licenses/lgpl-3.0.html>.
*/
package org.bbaw.pdr.ae.view.control.customSWTWidges;
import java.util.ArrayList;
import java.util.HashMap;
import org.bbaw.pdr.ae.common.AEConstants;
import org.bbaw.pdr.ae.common.AEVIEWConstants;
import org.bbaw.pdr.ae.common.CommonActivator;
import org.bbaw.pdr.ae.common.NLMessages;
import org.bbaw.pdr.ae.common.icons.IconsInternal;
import org.bbaw.pdr.ae.config.model.AspectConfigTemplate;
import org.bbaw.pdr.ae.config.model.ConfigData;
import org.bbaw.pdr.ae.config.model.ConfigItem;
import org.bbaw.pdr.ae.control.facade.Facade;
import org.bbaw.pdr.ae.model.TaggingRange;
import org.bbaw.pdr.ae.view.control.ViewHelper;
import org.bbaw.pdr.ae.view.control.dialogs.SelectOwnerAndKeyDialog;
import org.bbaw.pdr.ae.view.control.interfaces.IAEBasicEditor;
import org.bbaw.pdr.ae.view.control.provider.MarkupContentProvider;
import org.bbaw.pdr.ae.view.control.provider.MarkupLabelProvider;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Text;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class AEMarkupWidget extends Composite implements IAEBasicEditor
{
private Element _inputElement;
private boolean _requiered;
private int _widgetType;
private Composite _parentComposite;
private Text _markupText;
private IAEBasicEditor _parentEditor;
private AspectConfigTemplate _markupTemplate;
/** The markup provider. */
private String _markupProvider = Platform
.getPreferencesService()
.getString(CommonActivator.PLUGIN_ID, "PRIMARY_TAGGING_PROVIDER", AEConstants.TAGGING_LIST_PROVIDER, null).toUpperCase(); //$NON-NLS-1$;
private Facade _facade = Facade.getInstanz();
private boolean _mayWrite;
private ComboViewer _comboTaggingViewer;
private boolean _isValid;
private MarkupDateEditorLine _dateEditor;
private Combo _comboTagging;
/** The _selection listener. */
private ArrayList<SelectionListener> _selectionListeners = new ArrayList<SelectionListener>();
private boolean _loading;
private MarkupDateComboEditorLine _dateComboEditor;
private boolean _selected;
private boolean _editable = true;
/** Instance of shared image registry. */
private ImageRegistry _imageReg = CommonActivator.getDefault().getImageRegistry();
public AEMarkupWidget(IAEBasicEditor editor, Composite parent, AspectConfigTemplate template, boolean maywrite,
int style)
{
super(parent, SWT.NONE);
this.setLayout(new GridLayout(1, false));
((GridLayout) this.getLayout()).marginHeight = 0;
((GridLayout) this.getLayout()).verticalSpacing = 0;
((GridLayout) this.getLayout()).marginWidth = 0;
this.setLayoutData(new GridData());
((GridData) this.getLayoutData()).heightHint = 20;
_parentComposite = parent;
_markupTemplate = template;
_widgetType = template.getWidgetType();
_parentEditor = editor;
_mayWrite = maywrite;
_requiered = template.isRequired();
template.getLabel();
createMarkupWidget();
}
public final void addSelectionListener(final SelectionListener selectionListener)
{
if (selectionListener != null)
{
_selectionListeners.add(selectionListener);
}
}
private void createMarkupWidget()
{
this.setLayout(new GridLayout(1, false));
((GridLayout) this.getLayout()).marginHeight = 0;
((GridLayout) this.getLayout()).verticalSpacing = 0;
((GridLayout) this.getLayout()).marginWidth = 0;
_parentComposite = new Composite(this, SWT.NONE);
_parentComposite.setLayoutData(new GridData());
((GridData) _parentComposite.getLayoutData()).horizontalAlignment = SWT.FILL;
((GridData) _parentComposite.getLayoutData()).grabExcessHorizontalSpace = true;
if (Platform.getPreferencesService().getBoolean(CommonActivator.PLUGIN_ID, "ASPECT_LITE_EDIT_ANA_KEY",
AEConstants.ASPECT_LITE_EDIT_ANA_KEY, null))
{
_parentComposite.setLayout(new GridLayout(3, false));
}
else
{
_parentComposite.setLayout(new GridLayout(2, false));
}
((GridLayout) _parentComposite.getLayout()).marginHeight = 0;
((GridLayout) _parentComposite.getLayout()).verticalSpacing = 0;
((GridLayout) _parentComposite.getLayout()).marginWidth = 0;
if (_widgetType == AEAspectWidgetCustomizable.TYPE_TEXT)
{
createMarkupTextWidget();
}
else if (_widgetType == AEAspectWidgetCustomizable.TYPE_COMBO)
{
createMarkupComboWidget();
}
else if (_widgetType == AEAspectWidgetCustomizable.TYPE_DATE)
{
createMarkupDateWidget();
}
else if (_widgetType == AEAspectWidgetCustomizable.TYPE_DATE_COMBO)
{
createMarkupDateComboWidget();
}
if (_markupTemplate.getWidgetType() < 4)
{
if (Platform.getPreferencesService().getBoolean(CommonActivator.PLUGIN_ID, "ASPECT_LITE_EDIT_ANA_KEY",
AEConstants.ASPECT_LITE_EDIT_ANA_KEY, null))
{
Button anaKeyButton = new Button(_parentComposite, SWT.PUSH);
anaKeyButton.setImage(_imageReg.get(IconsInternal.KEY));
anaKeyButton.setToolTipText(NLMessages.getString("Editor_edit_ana_key"));
anaKeyButton.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
String ana = _inputElement.getAttribute("ana");
String key = _inputElement.getAttribute("key");
TaggingRange tr = new TaggingRange();
tr.setAna(ana);
tr.setKey(key);
Dialog dialog = new SelectOwnerAndKeyDialog(_parentComposite.getShell(), tr);
int returnCode = dialog.open();
if (returnCode == 0)
{
_inputElement.setAttribute("ana", tr.getAna());
_inputElement.setAttribute("key", tr.getKey());
contentChanged();
}
}
});
}
}
}
private void createMarkupDateComboWidget()
{
_dateComboEditor = new MarkupDateComboEditorLine(AEMarkupWidget.this, _markupTemplate, _parentComposite, SWT.None);
_dateComboEditor.setLayoutData(new GridData());
((GridData) _dateComboEditor.getLayoutData()).horizontalAlignment = SWT.FILL;
((GridData) _dateComboEditor.getLayoutData()).grabExcessHorizontalSpace = true;
((GridData) _dateComboEditor.getLayoutData()).horizontalSpan = 2;
_dateComboEditor.setSelected(false, true);
_dateComboEditor.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
Event ee = new Event();
// ee.data = EasyAspectEditor.this;
ee.widget = AEMarkupWidget.this;
SelectionEvent se = new SelectionEvent(ee);
se.data = AEMarkupWidget.this;
setDirty(true);
for (SelectionListener s : _selectionListeners)
{
s.widgetSelected(se);
}
}
});
_parentComposite.redraw();
_parentComposite.layout();
_parentComposite.update();
}
public int getWidgetType()
{
return _widgetType;
}
public void setWidgetType(int widgetType)
{
this._widgetType = widgetType;
}
private void createMarkupTextWidget()
{
_markupText = new Text(_parentComposite, SWT.BORDER);
_markupText.setBackground(AEVIEWConstants.VIEW_BACKGROUND_DESELECTED_COLOR);
_markupText.setLayoutData(new GridData());
((GridData) _markupText.getLayoutData()).horizontalSpan = 2;
((GridData) _markupText.getLayoutData()).horizontalAlignment = SWT.FILL;
((GridData) _markupText.getLayoutData()).grabExcessHorizontalSpace = true;
_markupText.setEnabled(_mayWrite);
_markupText.addKeyListener(new KeyListener()
{
@Override
public void keyReleased(KeyEvent e)
{
contentChanged();
}
@Override
public void keyPressed(KeyEvent e)
{
}
});
_markupText.addFocusListener(new FocusListener()
{
@Override
public void focusGained(final FocusEvent e)
{
Event ee = new Event();
// ee.data = EasyAspectEditor.this;
ee.widget = AEMarkupWidget.this;
SelectionEvent se = new SelectionEvent(ee);
se.data = AEMarkupWidget.this;
for (SelectionListener s : _selectionListeners)
{
s.widgetSelected(se);
}
// validate();
}
@Override
public void focusLost(FocusEvent e)
{
// saveInput();
// validate();
}
});
_markupText.addModifyListener(new ModifyListener()
{
@Override
public void modifyText(ModifyEvent e)
{
contentChanged();
}
});
}
private void contentChanged()
{
setDirty(true);
saveInput();
validateInternal();
validate();
}
private void validateInternal()
{
if (_requiered)
{
if (_widgetType == AEAspectWidgetCustomizable.TYPE_TEXT)
{
setValid(_markupText.getText().trim().length() > 0);
}
else if (_widgetType == AEAspectWidgetCustomizable.TYPE_COMBO)
{
setValid(true);
}
else if (_widgetType == AEAspectWidgetCustomizable.TYPE_DATE)
{
setValid(_dateEditor.isValid());
}
else if (_widgetType == AEAspectWidgetCustomizable.TYPE_DATE_COMBO)
{
setValid(_dateComboEditor.isValid());
}
}
else
{
setValid(true);
}
}
private void setValid(boolean valid) {
this._isValid = valid;
}
public void validate()
{
if (_parentEditor != null)
{
_parentEditor.validate();
}
}
private void createMarkupComboWidget()
{
_comboTagging = new Combo(_parentComposite, SWT.READ_ONLY);
_comboTagging.setLayoutData(new GridData());
((GridData) _comboTagging.getLayoutData()).horizontalAlignment = GridData.FILL;
((GridData) _comboTagging.getLayoutData()).grabExcessHorizontalSpace = true;
((GridData) _comboTagging.getLayoutData()).verticalAlignment = GridData.BEGINNING;
((GridData) _comboTagging.getLayoutData()).horizontalSpan = 2;
_comboTaggingViewer = new ComboViewer(_comboTagging);
_comboTaggingViewer.setContentProvider(new MarkupContentProvider());
_comboTaggingViewer.setLabelProvider(new MarkupLabelProvider());
if (_markupTemplate != null && _markupTemplate.getPos() != null)
{
ConfigData input = null;
if (_markupTemplate.getPos().equals("type") && _facade.getConfigs().containsKey(_markupProvider))
{
HashMap<String, ConfigData> inputs = _facade.getConfigs().get(_markupProvider).getChildren()
.get("aodl:" + _markupTemplate.getElement()).getChildren();
HashMap<String, ConfigItem> clones = new HashMap<String, ConfigItem>(inputs.size());
for (String key : inputs.keySet())
{
ConfigItem clone = (ConfigItem) inputs.get(key).clone();
clones.put(new String(key), clone);
}
if (_markupTemplate.getLevelSpan() == 2)
{
for (String k : inputs.keySet())
{
ConfigData cd = inputs.get(k);
if (cd != null)
{
for (String kk : cd.getChildren().keySet())
{
ConfigItem clone = (ConfigItem) cd.getChildren().get(kk).clone();
clones.put(new String(kk), clone);
}
}
}
}
if (_markupTemplate.getLevelSpan() == 3)
{
for (String k : inputs.keySet())
{
ConfigData cd = inputs.get(k);
if (cd != null)
{
for (String kk : cd.getChildren().keySet())
{
ConfigData cd2 = cd.getChildren().get(kk);
if (cd2 != null)
{
clones.put(new String(kk), ((ConfigItem) cd2).clone());
for (String kkk : cd2.getChildren().keySet())
{
clones.put(new String(kkk), (ConfigItem) cd2.getChildren().get(kkk).clone());
}
}
}
}
}
}
_comboTaggingViewer.setInput(clones);
_comboTagging.setEnabled(this.isEnabled());
}
else if (_markupTemplate.getPos().equals("subtype") && _facade.getConfigs().containsKey(_markupProvider))
{
if (_facade.getConfigs().get(_markupProvider).getChildren().get("aodl:" + _markupTemplate.getElement()) != null)
{
input = _facade.getConfigs().get(_markupProvider).getChildren()
.get("aodl:" + _markupTemplate.getElement()).getChildren().get(_markupTemplate.getType());
}
if (input != null)
{
HashMap<String, ConfigData> inputs = input.getChildren();
HashMap<String, ConfigItem> clones = new HashMap<String, ConfigItem>(inputs.size());
for (String key : inputs.keySet())
{
ConfigItem clone = (ConfigItem) inputs.get(key).clone();
clones.put(new String(key), clone);
}
if (_markupTemplate.getLevelSpan() == 2)
{
for (String k : inputs.keySet())
{
ConfigData cd = inputs.get(k);
if (cd != null)
{
for (String kk : cd.getChildren().keySet())
{
ConfigItem clone = (ConfigItem) cd.getChildren().get(kk).clone();
clones.put(new String(kk), clone);
}
}
}
}
_comboTaggingViewer.setInput(clones);
_comboTagging.setEnabled(this.isEnabled());
}
}
else if (_markupTemplate.getPos().equals("role") && _facade.getConfigs().containsKey(_markupProvider))
{
if (_facade.getConfigs().get(_markupProvider).getChildren().get("aodl:" + _markupTemplate.getElement()) != null
&& _facade.getConfigs().get(_markupProvider).getChildren()
.get("aodl:" + _markupTemplate.getElement()).getChildren()
.get(_markupTemplate.getType()) != null)
{
input = _facade.getConfigs().get(_markupProvider).getChildren()
.get("aodl:" + _markupTemplate.getElement()).getChildren().get(_markupTemplate.getType())
.getChildren().get(_markupTemplate.getSubtype());
}
if (input != null)
{
HashMap<String, ConfigData> inputs = input.getChildren();
HashMap<String, ConfigItem> clones = new HashMap<String, ConfigItem>(inputs.size());
for (String key : inputs.keySet())
{
ConfigItem clone = (ConfigItem) inputs.get(key).clone();
clones.put(new String(key), clone);
}
_comboTaggingViewer.setInput(clones);
_comboTagging.setEnabled(this.isEnabled());
}
}
}
_comboTagging.addFocusListener(new FocusListener()
{
@Override
public void focusGained(final FocusEvent e)
{
Event ee = new Event();
// ee.data = EasyAspectEditor.this;
ee.widget = AEMarkupWidget.this;
SelectionEvent se = new SelectionEvent(ee);
se.data = AEMarkupWidget.this;
for (SelectionListener s : _selectionListeners)
{
s.widgetSelected(se);
}
}
@Override
public void focusLost(FocusEvent e)
{
// saveInput();
}
});
final ControlDecoration typeDeco = new ControlDecoration(_comboTagging, SWT.RIGHT | SWT.TOP);
_comboTaggingViewer.addSelectionChangedListener(new ISelectionChangedListener()
{
@Override
public void selectionChanged(final SelectionChangedEvent event)
{
ISelection iSelection = event.getSelection();
Object obj = ((IStructuredSelection) iSelection).getFirstElement();
ConfigData cd = (ConfigData) obj;
if (cd != null)
{
if (_inputElement != null)
{
String deco = cd.getDescription();
if (deco != null && deco.trim().length() > 0)
{
typeDeco.setDescriptionText(deco);
typeDeco.setImage(FieldDecorationRegistry.getDefault()
.getFieldDecoration(FieldDecorationRegistry.DEC_INFORMATION).getImage());
}
else
{
typeDeco.setImage(null);
}
_inputElement.setTextContent(cd.getContent());
setValid(true);
if (cd.getPos() != null)
{
if (cd.getPos().equals("type"))
{
setAttributeNodeValue("type", cd.getValue());
setAttributeNodeValue("subtype", null);
setAttributeNodeValue("role", null);
}
else if (cd.getPos().equals("subtype"))
{
setAttributeNodeValue("subtype", cd.getValue());
ConfigItem ci = (ConfigItem) cd;
setAttributeNodeValue("type", ci.getParent().getValue());
setAttributeNodeValue("role", null);
}
else if (cd.getPos().equals("role"))
{
setAttributeNodeValue("role", cd.getValue());
ConfigItem ci = (ConfigItem) cd;
setAttributeNodeValue("subtype", ci.getParent().getValue());
ci = (ConfigItem) ci.getParent();
setAttributeNodeValue("type", ci.getParent().getValue());
}
}
}
}
if (!_loading)
{
contentChanged();
}
}
});
_parentComposite.redraw();
_parentComposite.layout();
_parentComposite.update();
}
private void setAttributeNodeValue(String attributeName, String value) {
if (attributeName != null)
{
Node node = _inputElement.getAttributeNode(attributeName);
if (node != null)
{
node.setNodeValue(value);
}
else
{
_inputElement.setAttribute(attributeName, value);
}
}
}
private void createMarkupDateWidget()
{
_dateEditor = new MarkupDateEditorLine(AEMarkupWidget.this, _markupTemplate, _parentComposite, SWT.None);
_dateEditor.setLayoutData(new GridData());
((GridData) _dateEditor.getLayoutData()).horizontalAlignment = SWT.FILL;
((GridData) _dateEditor.getLayoutData()).grabExcessHorizontalSpace = true;
((GridData) _dateEditor.getLayoutData()).horizontalSpan = 2;
_dateEditor.setSelected(false, true);
_dateEditor.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
Event ee = new Event();
// ee.data = EasyAspectEditor.this;
ee.widget = AEMarkupWidget.this;
SelectionEvent se = new SelectionEvent(ee);
se.data = AEMarkupWidget.this;
setDirty(true);
for (SelectionListener s : _selectionListeners)
{
s.widgetSelected(se);
}
}
});
_parentComposite.redraw();
_parentComposite.layout();
_parentComposite.update();
}
public Node getInputNode()
{
return _inputElement;
}
@Override
public void setInput(Object o)
{
if (o instanceof Element)
{
this._inputElement = (Element) o;
_loading = true;
loadInput();
_loading = false;
}
}
private void loadInput()
{
if (_widgetType == AEAspectWidgetCustomizable.TYPE_TEXT)
{
loadMarkupText();
}
else if (_widgetType == AEAspectWidgetCustomizable.TYPE_COMBO)
{
loadMarkupCombo();
}
else if (_widgetType == AEAspectWidgetCustomizable.TYPE_DATE)
{
loadMarkupDate();
}
else if (_widgetType == AEAspectWidgetCustomizable.TYPE_DATE_COMBO)
{
loadMarkupDateCombo();
}
this.redraw();
this.layout();
this.update();
}
private void loadMarkupText()
{
_markupText.setText(_inputElement.getTextContent());
}
private void loadMarkupCombo()
{
if (_inputElement.getAttribute("type") != null
&& (_inputElement.getAttribute("subtype") == null || _inputElement.getAttribute("subtype").trim()
.length() == 0))
{
// System.out.println("set combo by type");
if (_inputElement.getTextContent().trim().length() > 0)
{
ViewHelper.setComboViewerByString(_comboTaggingViewer, _inputElement.getAttribute("type"), !_loading);
}
}
else if (_inputElement.getAttribute("type") != null
&& (_inputElement.getAttribute("subtype") != null || _inputElement.getAttribute("subtype").trim()
.length() > 0)
&& (_inputElement.getAttribute("role") == null || _inputElement.getAttribute("role").trim()
.length() == 0))
{
// System.out.println("set combo by subtype");
if (_inputElement.getTextContent().trim().length() > 0)
{
ViewHelper.setComboViewerByString(_comboTaggingViewer, _inputElement.getAttribute("subtype"), !_loading);
}
}
else if (_inputElement.getAttribute("type") != null
&& (_inputElement.getAttribute("subtype") != null || _inputElement.getAttribute("subtype").trim()
.length() > 0)
&& (_inputElement.getAttribute("role") != null || _inputElement.getAttribute("role").trim()
.length() > 0))
{
// System.out.println("set combo by role");
if (_inputElement.getTextContent().trim().length() > 0)
{
ViewHelper.setComboViewerByString(_comboTaggingViewer, _inputElement.getAttribute("role"), !_loading);
}
}
// }
// }
_comboTagging.redraw();
_comboTagging.layout();
_comboTagging.update();
_comboTagging.pack();
}
private void loadMarkupDate()
{
_dateEditor.setInput(_inputElement);
}
private void loadMarkupDateCombo()
{
_dateComboEditor.setInput(_inputElement);
}
public void setDirty(boolean b)
{
if (!_loading && b && _parentEditor != null)
{
_parentEditor.setDirty(true);
}
}
@Override
public boolean isDirty()
{
return false;
}
@Override
public boolean isValid()
{
// if (_requiered)
// {
// if (_widgetType == AEAspectWidgetCustomizable.TYPE_TEXT)
// {
// setValid(_markupText.getText().trim().length() > 0);
// }
// else if (_widgetType == AEAspectWidgetCustomizable.TYPE_COMBO)
// {
//// loadMarkupCombo();
// }
// else if (_widgetType == AEAspectWidgetCustomizable.TYPE_DATE)
// {
//// loadMarkupDate();
// setValid(_dateEditor.isValid());
// }
// else if (_widgetType == AEAspectWidgetCustomizable.TYPE_DATE_COMBO)
// {
//// loadMarkupDateCombo();
// setValid(_dateComboEditor.isValid());
// }
// }
// else
// {
// setValid(true);
// }
return _isValid;
}
@Override
public void setSelected(boolean isSelected, boolean contextIsValid)
{
this._selected = isSelected;
if (_dateEditor != null)
{
_dateEditor.setSelected(_selected, contextIsValid);
}
if (_dateComboEditor != null)
{
_dateComboEditor.setSelected(_selected, contextIsValid);
}
if (isSelected && contextIsValid)
{
setBackground(AEVIEWConstants.VIEW_BACKGROUND_SELECTED_COLOR);
setForeground(AEVIEWConstants.VIEW_FOREGROUND_SELECTED_COLOR);
}
else if (contextIsValid)
{
setForeground(AEVIEWConstants.VIEW_FOREGROUND_DESELECTED_COLOR);
setBackground(AEVIEWConstants.VIEW_BACKGROUND_INVALID_COLOR);
}
else if (isSelected)
{
setBackground(AEVIEWConstants.VIEW_BACKGROUND_INVALID_COLOR);
setForeground(AEVIEWConstants.VIEW_FOREGROUND_SELECTED_COLOR);
}
else
{
setBackground(AEVIEWConstants.VIEW_BACKGROUND_DESELECTED_COLOR);
setForeground(AEVIEWConstants.VIEW_FOREGROUND_DESELECTED_COLOR);
}
_parentComposite.redraw();
_parentComposite.layout();
_parentComposite.update();
}
@Override
public void setBackground(Color color)
{
super.setBackground(color);
_parentComposite.setBackground(color);
}
@Override
public void setForeground(Color color)
{
super.setForeground(color);
if (_markupText != null)
{
_markupText.setForeground(color);
}
if (_comboTagging != null)
{
_comboTagging.setForeground(color);
}
}
// @Override
// public void setValid(boolean isValid)
// {
// if (isValid)
// {
// setBackground(AEVIEWConstants.VIEW_BACKGROUND_SELECTED_COLOR);
// }
// else
// {
// setBackground(AEVIEWConstants.VIEW_BACKGROUND_INVALID_COLOR);
// }
// if (_dateEditor != null)
// {
// _dateEditor.setValid(isValid);
// }
// if (_dateComboEditor != null)
// {
// _dateComboEditor.setValid(isValid);
// }
// this._isValid = isValid;
//
// }
@Override
public void saveInput()
{
if (!_loading)
{
switch (_widgetType)
{
case AEAspectWidgetCustomizable.TYPE_TEXT:
_inputElement.setTextContent(_markupText.getText().trim());
break;
case AEAspectWidgetCustomizable.TYPE_COMBO:
// loadMarkupCombo();
break;
case AEAspectWidgetCustomizable.TYPE_DATE:
// loadMarkupDate();
break;
case AEAspectWidgetCustomizable.TYPE_DATE_COMBO:
// loadMarkupDateCombo();
break;
}
// setDirty(true);
// validate();
//
_parentEditor.saveInput();
}
}
@Override
public void setEditable(boolean editable) {
this._editable = editable;
if (_comboTagging != null)
{
_comboTagging.setEnabled(_editable);
}
if (_markupText != null)
{
_markupText.setEditable(editable);
}
if (_dateEditor != null)
{
_dateEditor.setEditable(_editable);
}
if (_dateComboEditor != null)
{
_dateComboEditor.setEditable(_editable);
}
}
}