package org.insightech.er.editor.model; import java.beans.PropertyChangeEvent; import java.util.List; import java.util.Locale; import org.eclipse.draw2d.geometry.Point; import org.insightech.er.editor.ERDiagramMultiPageEditor; import org.insightech.er.editor.EROneDiagramEditor; import org.insightech.er.editor.model.diagram_contents.DiagramContents; import org.insightech.er.editor.model.diagram_contents.element.node.Location; import org.insightech.er.editor.model.diagram_contents.element.node.NodeElement; import org.insightech.er.editor.model.diagram_contents.element.node.NodeSet; import org.insightech.er.editor.model.diagram_contents.element.node.category.Category; import org.insightech.er.editor.model.diagram_contents.element.node.ermodel.ERModel; import org.insightech.er.editor.model.diagram_contents.element.node.ermodel.ERModelSet; import org.insightech.er.editor.model.diagram_contents.element.node.ermodel.VGroup; import org.insightech.er.editor.model.diagram_contents.element.node.note.Note; import org.insightech.er.editor.model.diagram_contents.element.node.table.ERTable; import org.insightech.er.editor.model.diagram_contents.element.node.table.ERVirtualTable; import org.insightech.er.editor.model.diagram_contents.element.node.table.TableView; import org.insightech.er.editor.model.diagram_contents.element.node.table.column.NormalColumn; import org.insightech.er.editor.model.diagram_contents.not_element.group.GlobalGroupSet; import org.insightech.er.editor.model.settings.DBSetting; import org.insightech.er.editor.model.settings.PageSetting; import org.insightech.er.editor.model.settings.Settings; import org.insightech.er.editor.model.tracking.ChangeTrackingList; public class ERDiagram extends ViewableModel { private static final long serialVersionUID = 8729319470770699498L; public static final String PROPERTY_CHANGE_ALL = "all"; public static final String PROPERTY_CHANGE_DATABASE = "database"; public static final String PROPERTY_CHANGE_SETTINGS = "settings"; public static final String PROPERTY_CHANGE_ADD = "add"; public static final String PROPERTY_CHANGE_ERMODEL = "ermodel"; public static final String PROPERTY_CHANGE_TABLE = "table"; private ChangeTrackingList changeTrackingList; private DiagramContents diagramContents; private ERDiagramMultiPageEditor editor; private int[] defaultColor; private boolean tooltip; private boolean showMainColumn; private boolean disableSelectColumn; private Category currentCategory; private int currentCategoryIndex; private ERModel currentErmodel; private double zoom = 1.0d; private int x; private int y; private DBSetting dbSetting; private PageSetting pageSetting; public Point mousePoint = new Point(); private String defaultModelName; public ERDiagram(String database) { this.diagramContents = new DiagramContents(); this.diagramContents.getSettings().setDatabase(database); this.pageSetting = new PageSetting(); this.setDefaultColor(128, 128, 192); this.setColor(255, 255, 255); } public void init() { this.diagramContents.setColumnGroups(GlobalGroupSet.load()); Settings settings = this.getDiagramContents().getSettings(); if (Locale.JAPANESE.getLanguage().equals( Locale.getDefault().getLanguage())) { settings.getTranslationSetting().setUse(true); settings.getTranslationSetting().selectDefault(); } settings.getModelProperties().init(); } public void addNewContent(NodeElement element) { element.setColor(this.defaultColor[0], this.defaultColor[1], this.defaultColor[2]); element.setFontName(this.getFontName()); element.setFontSize(this.getFontSize()); this.addContent(element); } public void addContent(NodeElement element) { element.setDiagram(this); this.diagramContents.getContents().addNodeElement(element); if (this.editor != null) { Category category = this.editor.getCurrentPageCategory(); if (category != null) { category.getContents().add(element); } } if (element instanceof TableView) { for (NormalColumn normalColumn : ((TableView) element) .getNormalColumns()) { this.getDiagramContents().getDictionary().add(normalColumn); } } if (element instanceof ERTable) { ERTable table = (ERTable) element; if (getCurrentErmodel() != null) { // �r���[��ɉ��z�e�[�u����lj����� ERModel model = getCurrentErmodel(); ERVirtualTable virtualTable = new ERVirtualTable(model, table); virtualTable.setPoint(element.getX(), element.getY()); // TODO ���C���r���[��ł͍���ɔz�u element.setLocation(new Location(0, 0, element.getWidth(), element.getHeight())); model.addTable(virtualTable); } } if (element instanceof ERVirtualTable) { ERVirtualTable virtualTable = (ERVirtualTable) element; if (getCurrentErmodel() != null) { // �r���[��ɉ��z�e�[�u����lj����� ERModel model = getCurrentErmodel(); // ERVirtualTable virtualTable = new ERVirtualTable(model, table); virtualTable.setPoint(element.getX(), element.getY()); // TODO ���C���r���[��ł͍���ɔz�u element.setLocation(new Location(0, 0, element.getWidth(), element.getHeight())); model.addTable(virtualTable); } } this.firePropertyChange(NodeSet.PROPERTY_CHANGE_CONTENTS, null, null); } public void removeContent(NodeElement element) { if (element instanceof ERVirtualTable) { // ���C���r���[�̃m�[�h�͎c���ĉ��z�e�[�u�������폜 currentErmodel.remove((ERVirtualTable)element); } else if (element instanceof VGroup) { currentErmodel.remove((VGroup)element); } else if (element instanceof Note) { currentErmodel.remove((Note)element); } else { this.diagramContents.getContents().remove(element); if (element instanceof ERTable) { // ���C���r���[�̃e�[�u�����폜�����Ƃ��́A�r���[�̃m�[�h���폜�iTODO �����������Ɏc���Ă��܂��j for (ERModel model : getDiagramContents().getModelSet()) { ERVirtualTable vtable = model.findVirtualTable((TableView) element); model.remove(vtable); } } } if (element instanceof TableView) { this.diagramContents.getDictionary().remove((TableView) element); } for (Category category : this.diagramContents.getSettings() .getCategorySetting().getAllCategories()) { category.getContents().remove(element); } this.firePropertyChange(NodeSet.PROPERTY_CHANGE_CONTENTS, null, null); } public void replaceContents(DiagramContents newDiagramContents) { this.diagramContents = newDiagramContents; this.firePropertyChange(NodeSet.PROPERTY_CHANGE_CONTENTS, null, null); } public void addErmodel(ERModel ermodel) { diagramContents.getModelSet().add(ermodel); firePropertyChange(PROPERTY_CHANGE_ADD, null, ermodel); } public void changeAll() { this.firePropertyChange(PROPERTY_CHANGE_ALL, null, null); } public void changeAll(List<NodeElement> nodeElementList) { this.firePropertyChange(PROPERTY_CHANGE_ALL, null, nodeElementList); } public void changeTable(TableView tableView) { this.firePropertyChange(PROPERTY_CHANGE_TABLE, null, tableView); } public void setDatabase(String str) { String oldDatabase = getDatabase(); this.getDiagramContents().getSettings().setDatabase(str); if (str != null && !str.equals(oldDatabase)) { this.firePropertyChange(PROPERTY_CHANGE_DATABASE, oldDatabase, getDatabase()); this.changeAll(); } } public String getDatabase() { return this.getDiagramContents().getSettings().getDatabase(); } public void restoreDatabase(String str) { this.getDiagramContents().getSettings().setDatabase(str); } public void setSettings(Settings settings) { this.getDiagramContents().setSettings(settings); this.editor.initCategoryPages(); this.firePropertyChange(PROPERTY_CHANGE_SETTINGS, null, null); this.firePropertyChange(NodeSet.PROPERTY_CHANGE_CONTENTS, null, null); } public void setCurrentCategoryPageName() { this.editor.setCurrentCategoryPageName(); } public void addCategory(Category category) { category.setColor(this.defaultColor[0], this.defaultColor[1], this.defaultColor[2]); this.getDiagramContents().getSettings().getCategorySetting() .addCategoryAsSelected(category); this.editor.initCategoryPages(); this.firePropertyChange(NodeSet.PROPERTY_CHANGE_CONTENTS, null, null); } public void removeCategory(Category category) { this.getDiagramContents().getSettings().getCategorySetting() .removeCategory(category); this.editor.initCategoryPages(); this.firePropertyChange(NodeSet.PROPERTY_CHANGE_CONTENTS, null, null); } public void restoreCategories() { this.editor.initCategoryPages(); this.firePropertyChange(NodeSet.PROPERTY_CHANGE_CONTENTS, null, null); } public void change() { this.firePropertyChange(PROPERTY_CHANGE_SETTINGS, null, null); } public ChangeTrackingList getChangeTrackingList() { if (this.changeTrackingList == null) { this.changeTrackingList = new ChangeTrackingList(); } return changeTrackingList; } public DiagramContents getDiagramContents() { return this.diagramContents; } public void setEditor(ERDiagramMultiPageEditor editor) { this.editor = editor; } public int[] getDefaultColor() { return defaultColor; } public void setDefaultColor(int red, int green, int blue) { this.defaultColor = new int[3]; this.defaultColor[0] = red; this.defaultColor[1] = green; this.defaultColor[2] = blue; } public void setCurrentCategory(Category currentCategory, int currentCategoryIndex) { this.currentCategory = currentCategory; this.currentCategoryIndex = currentCategoryIndex; this.changeAll(); } public Category getCurrentCategory() { return currentCategory; } public int getCurrentCategoryIndex() { return currentCategoryIndex; } public boolean isTooltip() { return tooltip; } public void setTooltip(boolean tooltip) { this.tooltip = tooltip; } /** * currentErmodel���擾���܂��B * @return currentErmodel */ public ERModel getCurrentErmodel() { return currentErmodel; } public double getZoom() { return zoom; } public void setZoom(double zoom) { this.zoom = zoom; } public void setLocation(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public int getY() { return y; } /** * dbSetting ���擾���܂�. * * @return dbSetting */ public DBSetting getDbSetting() { return dbSetting; } /** * dbSetting ��ݒ肵�܂�. * * @param dbSetting * dbSetting */ public void setDbSetting(DBSetting dbSetting) { this.dbSetting = dbSetting; } /** * pageSetting ���擾���܂�. * * @return pageSetting */ public PageSetting getPageSetting() { return pageSetting; } /** * pageSetting ��ݒ肵�܂�. * * @param pageSetting * pageSetting */ public void setPageSetting(PageSetting pageSetting) { this.pageSetting = pageSetting; } /** * editor ���擾���܂�. * * @return editor */ public ERDiagramMultiPageEditor getEditor() { return editor; } public String filter(String str) { if (str == null) { return str; } Settings settings = this.getDiagramContents().getSettings(); if (settings.isCapital()) { return str.toUpperCase(); } return str; } /** * showMainColumn��ݒ肵�܂��B * @param showMainColumn showMainColumn */ public void setShowMainColumn(boolean showMainColumn) { this.showMainColumn = showMainColumn; } /** * showMainColumn���擾���܂��B * @return showMainColumn */ public boolean isShowMainColumn() { return showMainColumn; } /** * disableSelectColumn ���擾���܂�. * * @return disableSelectColumn */ public boolean isDisableSelectColumn() { return disableSelectColumn; } /** * disableSelectColumn ��ݒ肵�܂�. * * @param disableSelectColumn * disableSelectColumn */ public void setDisableSelectColumn(boolean disableSelectColumn) { this.disableSelectColumn = disableSelectColumn; } public void setCurrentErmodel(ERModel model, String defaultModelName) { this.currentErmodel = model; this.defaultModelName = defaultModelName; if (model != null) { model.changeAll(); } } /** * defaultModelName���擾���܂��B * @return defaultModelName */ public String getDefaultModelName() { return defaultModelName; } /** * ���C���r���[�Ńe�[�u�����X�V�����Ƃ��ɌĂ΂�܂��B * �T�u�r���[�̃e�[�u�����X�V���܂��B * @param newCopyTableView */ public void doChangeTable(TableView table) { for (ERModel model : getDiagramContents().getModelSet()) { ERVirtualTable vtable = model.findVirtualTable(table); if (vtable != null) { vtable.doChangeTable(); } } } public ERModel findModelByTable(ERTable table) { for (ERModel model : diagramContents.getModelSet()) { for (ERVirtualTable vtable : model.getTables()) { if (vtable.getRawTable().equals(table)) { return model; } } } return null; } // /** // * �S�̃r���[�������͒ʏ�r���[�ōX�V���ꂽ���e���A�S�Ẵr���[�ɓW�J���܂��B // * @param event ���������C�x���g // * @param nodeElement �X�V�������f�� // */ // public void refreshAllModel(PropertyChangeEvent event, NodeElement nodeElement) { // if (nodeElement instanceof ERVirtualTable) { // ERTable table = ((ERVirtualTable)nodeElement).getRawTable(); // // ���C���r���[�ɓW�J // table.getDiagram().doChangeTable(table); // // �S�r���[�ɓW�J // for (ERModel model : getDiagramContents().getModelSet()) { // ERVirtualTable vtable = model.findVirtualTable(table); // if (vtable != null) { // vtable.doChangeTable(); //// vtable.firePropertyChange(event.getPropertyName(), event.getOldValue(), event.getNewValue()); // } // } // } else if (nodeElement instanceof ERTable) { // ERTable table = (ERTable)nodeElement; // // ���C���r���[�ɓW�J // table.getDiagram().doChangeTable(table); // // �S�r���[�ɓW�J // for (ERModel model : getDiagramContents().getModelSet()) { // ERVirtualTable vtable = model.findVirtualTable(table); // if (vtable != null) { // vtable.doChangeTable(); //// vtable.firePropertyChange(event.getPropertyName(), event.getOldValue(), event.getNewValue()); // } // } // } // // } }