/** @see InstanceViewer#setInput(TypeDefinition, Iterable) */ @Override public void setInput(TypeDefinition type, Iterable<Instance> instances) { // remove old columns TreeColumn[] columns = treeViewer.getTree().getColumns(); if (columns != null) { for (TreeColumn column : columns) { column.dispose(); } labelProviders.clear(); } // create row defs for metadata // if (features != null) { // boolean displayLineage = false; // int lineageLength = 0; // int featuresSize = 0; // for (Feature f : features) { // featuresSize++; // Lineage l = (Lineage) f.getUserData().get("METADATA_LINEAGE"); //$NON-NLS-1$ // if (l != null && l.getProcessSteps().size() > 0) { // displayLineage = true; // if (lineageLength < l.getProcessSteps().size()) { // lineageLength = l.getProcessSteps().size(); // } // } // } // // if (displayLineage) { // Object[][] processStepsText = new Object[lineageLength][featuresSize + 1]; // int featureIndex = 0; // for (Feature f : features) { // Lineage l = (Lineage) f.getUserData().get("METADATA_LINEAGE"); //$NON-NLS-1$ // if (l != null && l.getProcessSteps().size() > 0) { // int psIndex = 0; // for (ProcessStep ps : l.getProcessSteps()) { // processStepsText[psIndex][featureIndex + 1] = ps.getDescription().toString(); // psIndex++; // } // } // featureIndex++; // } // // DefaultTreeNode lineage = new DefaultTreeNode(Messages.DefinitionFeatureTreeViewer_5); // //$NON-NLS-1$ // metadata.addChild(lineage); // for (int i = 0; i < lineageLength; i++) { // processStepsText[i][0] = Messages.DefinitionFeatureTreeViewer_6 + (i + 1); //$NON-NLS-1$ // DefaultTreeNode processStep = new DefaultTreeNode(processStepsText[i]); // lineage.addChild(processStep); // } // } // set input if (type != null) { // pass metadatas to the treeviewer, if instances contain metadatas Set<String> completeMetaNames = new HashSet<String>(); for (Instance inst : instances) { for (String name : inst.getMetaDataNames()) { completeMetaNames.add(name); } } Pair<TypeDefinition, Set<String>> pair = new Pair<TypeDefinition, Set<String>>(type, completeMetaNames); treeViewer.setInput(pair); } else treeViewer.setInput(Collections.emptySet()); Layout layout = treeViewer.getTree().getParent().getLayout(); // add type column if (type != null) { TreeViewerColumn column = new TreeViewerColumn(treeViewer, SWT.LEFT); column.getColumn().setText(type.getDisplayName()); column.setLabelProvider( new TreeColumnViewerLabelProvider(new DefinitionMetaCompareLabelProvider(treeViewer))); if (layout instanceof TreeColumnLayout) { ((TreeColumnLayout) layout).setColumnData(column.getColumn(), new ColumnWeightData(1)); } } // add columns for features int index = 1; if (instances != null) { // // sort features // List<Feature> sortedFeatures = new ArrayList<Feature>(); // for (Feature f : features) { // sortedFeatures.add(f); // } // Collections.sort(sortedFeatures, new Comparator<Feature>() { // // @Override // public int compare(Feature o1, Feature o2) { // FeatureId id1 = FeatureBuilder.getSourceID(o1); // if (id1 == null) { // id1 = o1.getIdentifier(); // } // // FeatureId id2 = FeatureBuilder.getSourceID(o2); // if (id2 == null) { // id2 = o2.getIdentifier(); // } // // return id1.getID().compareTo(id2.getID()); // } // // }); List<Instance> insts = new ArrayList<Instance>(); for (Instance instance : instances) { // sortedFeatures) { final TreeViewerColumn column = new TreeViewerColumn(treeViewer, SWT.LEFT); // FeatureId id = FeatureBuilder.getSourceID(feature); // if (id == null) { // id = feature.getIdentifier(); // } // column.getColumn().setText(id.toString()); column.getColumn().setText(String.valueOf(index)); // XXX // identifier? DefinitionInstanceLabelProvider labelProvider = new DefinitionInstanceLabelProvider(instance); labelProviders.put(index, labelProvider); column.setLabelProvider(labelProvider); if (layout instanceof TreeColumnLayout) { ((TreeColumnLayout) layout).setColumnData(column.getColumn(), new ColumnWeightData(1)); } // add tool tip // new ColumnBrowserTip(treeViewer, 400, 300, true, index, null); insts.add(instance); index++; } ((MetadataCompareActionProvider) maep).setInput(insts, labelProviders); } treeViewer.refresh(); treeViewer.getTree().getParent().layout(true, true); selectionProvider.updateSelection(instances); // auto-expand attributes/metadata treeViewer.expandToLevel(2); }