blob: 1be3c26ee2b93297376205d6850179761b3bcbbc [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are 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:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*/
package org.eclipse.osbp.preferences.ui.component;
import org.eclipse.osbp.preferences.AItemDescribed;
import org.eclipse.osbp.preferences.AItemDescribed.SubItem;
import org.eclipse.osbp.preferences.IItemDescribed;
import org.eclipse.osbp.preferences.ItemDescription;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableTreeItem;
public class TableTreeDescribedItem extends TableTreeItem implements IItemDescribed {
private final ATableTreeFieldEditor fParent;
private final static int ATTRIBUTE = 0;
protected final static int VALUE = 2;
protected final static int HINT = 1;
public TableTreeDescribedItem(ATableTreeFieldEditor parent, AItemDescribed dataItem, AItemDescribed defaultItem) {
this(parent);
ItemDescription description = fParent.getItemDescription();
if (dataItem.getRowName() == null) {
setText(ATTRIBUTE, description.getRowName());
}
else {
setText(ATTRIBUTE, dataItem.getRowName());
}
setText(VALUE, dataItem.getName());
String[] columnNames = description.getColumnNames();
if (dataItem.getSubItems() != null) {
for (SubItem subItem : dataItem.getSubItems()) {
TableTreeItem attribute = new TableTreeItem(this, SWT.NONE);
attribute.setText(ATTRIBUTE, subItem.getAction());
attribute.setText(VALUE, subItem.getInformation());
attribute.setImage(HINT, APreferencePage.getImage(subItem.getIcon()));
}
setImage(HINT, APreferencePage.getImage(dataItem.getIconName()));
}
else {
if (columnNames.length > 0) {
boolean isDefault = defaultItem != null;
for (int idx = 0; idx<columnNames.length; idx++) {
TableTreeItem attribute = new TableTreeItem(this, SWT.NONE);
attribute.setText(ATTRIBUTE, columnNames[idx]);
attribute.setText(VALUE, dataItem.getValue(columnNames[idx]));
if (defaultItem != null && dataItem.getValue(columnNames[idx]).equals(defaultItem.getValue(columnNames[idx]))) {
attribute.setImage(HINT, APreferencePage.getImage(APreferencePage.DEFAULT_VALUE_YES));
}
else {
isDefault = false;
attribute.setImage(HINT, APreferencePage.getImage(APreferencePage.DEFAULT_VALUE_NO));
}
}
setImage(HINT, APreferencePage.getImage(isDefault ? APreferencePage.DEFAULT_VALUE_YES : APreferencePage.DEFAULT_VALUE_NO));
}
}
}
public static TableTreeDescribedItem clone(TableTreeItem source, String postfix) {
TableTreeDescribedItem cloned = null;
if (source instanceof TableTreeDescribedItem) {
TableTreeDescribedItem sourceItem = (TableTreeDescribedItem) source;
ItemDescription description = sourceItem.fParent.getItemDescription();
cloned = new TableTreeDescribedItem(sourceItem.fParent);
cloned.setText(ATTRIBUTE, description.getRowName());
cloned.setText(VALUE, sourceItem.getText(VALUE)+postfix);
cloned.setImage(HINT, APreferencePage.getImage(APreferencePage.DEFAULT_VALUE_NO));
String[] columnNames = description.getColumnNames();
for (int idx = 0; idx<columnNames.length; idx++) {
TableTreeItem sourceAttribute = sourceItem.getItem(idx);
TableTreeItem cloneAttribute = new TableTreeItem(cloned, SWT.NONE);
cloneAttribute.setText(ATTRIBUTE, columnNames[idx]);
cloneAttribute.setText(VALUE, sourceAttribute.getText(VALUE));
cloneAttribute.setImage(HINT, APreferencePage.getImage(APreferencePage.DEFAULT_VALUE_NO));
}
}
return cloned;
}
public TableTreeDescribedItem(ATableTreeFieldEditor parent) {
super(parent.tableTree, SWT.NONE);
fParent = parent;
}
@Override
public String getName() {
return getText(VALUE);
}
@Override
@Deprecated
public void setName(String name) {
// NOP
}
@Override
public String getValue(String attribute) {
ItemDescription description = fParent.getItemDescription();
String[] columnNames = description.getColumnNames();
for (int idx = 0; idx<columnNames.length; idx++) {
if (columnNames[idx].equals(attribute)) {
return getItem(idx).getText(VALUE);
}
}
return null;
}
@Override
@Deprecated
public void setValue(String attribute, String value) {
// NOP
}
}