📄 erdviewerpanel.java
字号:
ErdTable[] tablesArray = getAllComponentsArray(); for (int i = 0; i < tablesArray.length; i++) { tableExtentX = tablesArray[i].getX() + tablesArray[i].getWidth(); tableExtentY = tablesArray[i].getY() + tablesArray[i].getHeight(); if (tableExtentX > width) width = tableExtentX; if (tableExtentY > height) height = tableExtentY; } if (erdTitlePanel != null) { tableExtentX = erdTitlePanel.getX() + erdTitlePanel.getWidth(); tableExtentY = erdTitlePanel.getY() + erdTitlePanel.getHeight(); if (tableExtentX > width) width = tableExtentX; if (tableExtentY > height) height = tableExtentY; } return new Dimension(width + 20, height + 20); } public void removeAllTables() { ErdTable[] allTables = getAllComponentsArray(); for (int i = 0; i < allTables.length; i++) { allTables[i].clean(); layeredPane.remove(allTables[i]); tables.remove(allTables[i]); allTables[i] = null; } layeredPane.repaint(); } public void setSavedErd(ErdSaveFileFormat savedErd) { this.savedErd = savedErd; } public void setSavedErd(ErdSaveFileFormat _savedErd, String absolutePath) { if (tables != null && tables.size() > 0) { int confirm = GUIUtilities.displayConfirmDialog("Do you want to save your changes?"); if (confirm == JOptionPane.YES_OPTION) { if (savedErd != null) { saveApplicationFileFormat(new File(savedErd.getAbsolutePath())); } else { new ErdSaveDialog(this); } } removeAllTables(); } tables = new Vector(); Font columnNameFont = _savedErd.getColumnNameFont(); Font tableNameFont = _savedErd.getTableNameFont(); ErdTableFileData[] fileData = _savedErd.getTables(); ErdTable table = null; for (int i = 0; i < fileData.length; i++) { table = new ErdTable(fileData[i].getTableName(), fileData[i].getColumnData(), this); table.setCreateTableScript(fileData[i].getCreateTableScript()); table.setAlterTableHash(fileData[i].getAlterTableHash()); table.setAlterTableScript(fileData[i].getAlterTableScript()); table.setAddConstraintsScript(fileData[i].getAddConstraintScript()); table.setBounds(fileData[i].getTableBounds()); table.setEditable(true); table.setTableBackground(fileData[i].getTableBackground()); layeredPane.add(table); tables.add(table); table.toFront(); } ErdTitlePanelData titlePanelData = _savedErd.getTitlePanel(); if (titlePanelData != null) { ErdTitlePanel _erdTitlePanel = new ErdTitlePanel(this, titlePanelData.getErdName(), titlePanelData.getErdDate(), titlePanelData.getErdDescription(), titlePanelData.getErdDatabase(), titlePanelData.getErdAuthor(), titlePanelData.getErdRevision(), titlePanelData.getErdFileName()); _erdTitlePanel.setBounds(titlePanelData.getTitleBounds()); layeredPane.add(_erdTitlePanel); _erdTitlePanel.toFront(); this.erdTitlePanel = _erdTitlePanel; } this.savedErd = _savedErd; savedErd.setAbsolutePath(absolutePath); tableFontName = tableNameFont.getName(); tableFontSize = columnNameFont.getSize(); tableNameFontStyle = tableNameFont.getStyle(); columnNameFontStyle = columnNameFont.getStyle(); if (savedErd.hasCanvasBackground()) setCanvasBackground(savedErd.getCanvasBackground()); fileName = savedErd.getFileName(); GUIUtilities.setTabTitleForComponent(this, TITLE + " - " + fileName); dependsPanel.setTableDependencies(buildTableRelationships()); resizeCanvas(); layeredPane.validate(); } public boolean hasOpenFile() { return savedErd != null; } public boolean promptToSave() { if (tables.size() > 0) return true; else return false; } public int save(boolean saveAs) { ErdSaveDialog saveDialog = null; if (savedErd != null) { if (saveAs) { saveDialog = new ErdSaveDialog(this, savedErd.getAbsolutePath()); } else { return saveApplicationFileFormat(new File(savedErd.getAbsolutePath())); } } else { saveDialog = new ErdSaveDialog(this, new File(fileName)); } int saved = saveDialog.getSaved(); saveDialog = null; return saved; } protected int saveApplicationFileFormat(File file) { ErdTable[] tables = getAllComponentsArray(); ErdTableFileData[] fileData = new ErdTableFileData[tables.length]; for (int i = 0; i < tables.length; i++) { fileData[i] = new ErdTableFileData(); fileData[i].setTableBounds(tables[i].getBounds()); fileData[i].setTableName(tables[i].getTableName()); fileData[i].setCreateTableScript(tables[i].getCreateTableScript()); fileData[i].setColumnData(tables[i].getTableColumns()); fileData[i].setAlterTableHash(tables[i].getAlterTableHash()); fileData[i].setAlterTableScript(tables[i].getAlterTableScript()); fileData[i].setAddConstraintScript(tables[i].getAddConstraintsScript()); fileData[i].setDropConstraintScript(tables[i].getDropConstraintsScript()); fileData[i].setTableBackground(tables[i].getTableBackground()); } ErdSaveFileFormat eqFormat = new ErdSaveFileFormat(fileData, file.getName()); eqFormat.setColumnNameFont(columnNameFont); eqFormat.setTableNameFont(tableNameFont); eqFormat.setTableBackground(tables[0].getTableBackground()); eqFormat.setAbsolutePath(file.getAbsolutePath()); if (erdTitlePanel != null) { ErdTitlePanelData titlePanelData = new ErdTitlePanelData(); titlePanelData.setErdAuthor(erdTitlePanel.getErdAuthor()); titlePanelData.setErdDatabase(erdTitlePanel.getErdDatabase()); titlePanelData.setErdDate(erdTitlePanel.getErdDate()); titlePanelData.setErdDescription(erdTitlePanel.getErdDescription()); titlePanelData.setErdFileName(erdTitlePanel.getErdFileName()); titlePanelData.setErdName(erdTitlePanel.getErdName()); titlePanelData.setErdRevision(erdTitlePanel.getErdRevision()); titlePanelData.setTitleBounds(erdTitlePanel.getBounds()); eqFormat.setTitlePanel(titlePanelData); } if (!shouldDisplayGrid()) { eqFormat.setCanvasBackground(getCanvasBackground()); } else { eqFormat.setCanvasBackground(null); } try { FileOutputStream fileOut = new FileOutputStream(file); BufferedOutputStream bufferedOut = new BufferedOutputStream(fileOut); ObjectOutputStream obOut = new ObjectOutputStream(bufferedOut); obOut.writeObject(eqFormat); bufferedOut.close(); obOut.close(); fileOut.close(); savedErd = eqFormat; return SaveFunction.SAVE_COMPLETE; } catch(Exception e) { e.printStackTrace(); GUIUtilities.displayErrorMessage("An error occured saving to file:\n" + e.getMessage()); return SaveFunction.SAVE_FAILED; } } public void cleanup() { // ------------------------------------------------- // memory leak noticed so 'shutdown hook' added // to selected components used within this feature // unitl fix is found. // ------------------------------------------------- layeredPane.clean(); ErdTable[] tablesArray = getAllComponentsArray(); for (int i = 0; i < tablesArray.length; i++) { tablesArray[i].clean(); tablesArray[i] = null; } } public void showFontStyleDialog() { new ErdFontStyleDialog(this); } public void showLineStyleDialog() { new ErdLineStyleDialog(dependsPanel); } protected void setScaleComboValue(String value) { if (!editable) return; tools.setScaleComboValue(value); } protected void setPopupMenuScaleValue(int index) { if (!editable) return; layeredPane.setMenuScaleSelection(index); } protected double getScaleIndex() { return layeredPane.getScale(); } protected void setScaledView(double scale) { ErdTable table = null; if (tables == null) tables = new Vector(); for (int i = 0, k = tables.size(); i < k; i++) { table = (ErdTable)tables.elementAt(i); table.setScale(scale); } if (erdTitlePanel != null) erdTitlePanel.setScale(scale); layeredPane.setScale(scale); scroll.setScale(scale); layeredPane.repaint(); resizeCanvas(); } protected void zoom(boolean zoomIn) { double scale = layeredPane.getScale(); if (zoomIn) { if (scale < 2.0) { scale += 0.25; tools.incrementScaleCombo(1); } else return; } else { if (scale > 0.25) { scale -= 0.25; tools.incrementScaleCombo(-1); } else return; } setScaledView(scale); } public String getAllSQLText() { char newLine = '\n'; StringBuffer sb = new StringBuffer(); ErdTable[] allTables = getAllComponentsArray(); for (int i = 0; i < allTables.length; i++) { if (allTables[i].hasSQLScripts()) { sb.append(allTables[i].getAllSQLScripts()). append(newLine); } } return sb.toString(); } public String getErdFileName() { return fileName; } public String getDisplayName() { return toString(); } public String toString() { return TITLE + " - " + fileName; } public DatabaseConnection getDatabaseConnection() { return databaseConnection; } public void setDatabaseConnection(DatabaseConnection databaseConnection) { this.databaseConnection = databaseConnection; } // -------------------------------------------- // TabView implementation // -------------------------------------------- /** * Indicates the panel is being removed from the pane */ public boolean tabViewClosing() { // check if we are saving if (SystemUtilities.isPromptingToSave()) { if (!GUIUtilities.saveOpenChanges(this)) { return false; } } cleanup(); return true; } // --------------------------------------------}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -