| /** |
| * |
| * 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 |
| } |
| } |