package org.insightech.er.editor.controller.editpart.outline.table;
import java.beans.PropertyChangeEvent;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
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.element.node.ERTableEditPart;
import org.insightech.er.editor.controller.editpart.outline.AbstractOutlineEditPart;
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.TableSet;
import org.insightech.er.editor.model.diagram_contents.element.node.table.TableView;
import org.insightech.er.editor.model.settings.Settings;
public class TableSetOutlineEditPart extends AbstractOutlineEditPart {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals(TableSet.PROPERTY_CHANGE_TABLE_SET)) {
refresh();
}
}
public static List<EditPart> tableEditParts;
/**
* {@inheritDoc}
*/
@Override
protected List getModelChildren() {
TableSet tableSet = (TableSet) this.getModel();
List<ERTable> list = new ArrayList<ERTable>();
Category category = this.getCurrentCategory();
String filterText = getFilterText();
for (ERTable table : tableSet) {
if (category == null || category.contains(table)) {
if (filterText != null) {
if (table.getPhysicalName().toLowerCase().indexOf(filterText.toLowerCase()) < 0) {
continue;
}
}
list.add(table);
}
}
if (this.getDiagram().getDiagramContents().getSettings()
.getViewOrderBy() == Settings.VIEW_MODE_LOGICAL) {
Collections.sort(list, TableView.LOGICAL_NAME_COMPARATOR);
} else {
Collections.sort(list, TableView.PHYSICAL_NAME_COMPARATOR);
}
if (filterText != null) {
Iterator<ERTable> iterator = list.iterator();
while (iterator.hasNext()) {
ERTable table = iterator.next();
if (table.getPhysicalName().equalsIgnoreCase(filterText)) {
iterator.remove();
list.add(0, table);
break;
}
}
}
return list;
}
/**
* {@inheritDoc}
*/
@Override
protected void refreshOutlineVisuals() {
this.setWidgetText(ResourceString.getResourceString("label.table")
+ " (" + this.getModelChildren().size() + ")");
this.setWidgetImage(Activator.getImage(ImageKey.DICTIONARY));
}
/**
* {@inheritDoc}
*/
@Override
protected void refreshChildren() {
super.refreshChildren();
tableEditParts = new ArrayList<EditPart>();
for (Object child : this.getChildren()) {
EditPart part = (EditPart) child;
tableEditParts.add(part);
part.refresh();
}
}
}