package org.insightech.er.editor.controller.editpart.outline.index;
import java.beans.PropertyChangeEvent;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.gef.EditPart;
import org.insightech.er.Activator;
import org.insightech.er.ImageKey;
import org.insightech.er.ResourceString;
import org.insightech.er.editor.controller.editpart.outline.AbstractOutlineEditPart;
import org.insightech.er.editor.model.ERDiagram;
import org.insightech.er.editor.model.diagram_contents.element.node.category.Category;
import org.insightech.er.editor.model.diagram_contents.element.node.table.ERTable;
import org.insightech.er.editor.model.diagram_contents.element.node.table.index.Index;
import org.insightech.er.editor.model.diagram_contents.element.node.table.index.IndexSet;
public class IndexSetOutlineEditPart extends AbstractOutlineEditPart {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals(IndexSet.PROPERTY_CHANGE_INDEXES)) {
refresh();
}
}
/**
* {@inheritDoc}
*/
@Override
protected List getModelChildren() {
List<Index> children = new ArrayList<Index>();
ERDiagram diagram = this.getDiagram();
Category category = this.getCurrentCategory();
for (ERTable table : diagram.getDiagramContents().getContents()
.getTableSet()) {
if (category == null || category.contains(table)) {
children.addAll(table.getIndexes());
}
}
Collections.sort(children);
return children;
}
/**
* {@inheritDoc}
*/
@Override
protected void refreshOutlineVisuals() {
this.setWidgetText(ResourceString.getResourceString("label.index")
+ " (" + this.getModelChildren().size() + ")");
this.setWidgetImage(Activator.getImage(ImageKey.DICTIONARY));
}
/**
* {@inheritDoc}
*/
@Override
protected void refreshChildren() {
super.refreshChildren();
for (Object child : this.getChildren()) {
EditPart part = (EditPart) child;
part.refresh();
}
}
}