From 2850c9e04b75b9d5cea5e403e1a7366eb03309e5 Mon Sep 17 00:00:00 2001 From: shine Date: Wed, 16 Dec 2020 17:51:56 +0800 Subject: [PATCH 01/16] =?UTF-8?q?CHART-17231=20=E9=BB=98=E8=AE=A4=E4=B8=8D?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E4=BB=BB=E4=BD=95=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/extended/chart/UIComboBoxWithNone.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/designer-chart/src/main/java/com/fr/extended/chart/UIComboBoxWithNone.java b/designer-chart/src/main/java/com/fr/extended/chart/UIComboBoxWithNone.java index 65e7bbb43..9c6636fd7 100644 --- a/designer-chart/src/main/java/com/fr/extended/chart/UIComboBoxWithNone.java +++ b/designer-chart/src/main/java/com/fr/extended/chart/UIComboBoxWithNone.java @@ -23,7 +23,11 @@ public class UIComboBoxWithNone extends UIComboBox { } protected void setDefaultSelectedItem() { - setSelectedItem(StringUtils.EMPTY); + // JComboBox.setSelectedItem(o) + // if(o!=null)寻找o对应的下拉选项 如果找不到 还是选中之前选中的 + // 所以空字符串 不是选中空 是选中上次选中的 + // 所以这边 可以写setSelectedItem(null) or setSelectedIndex(-1) + setSelectedIndex(-1); } @Override From 0368ee251bf5936f59d1abee25cf506608b9c603 Mon Sep 17 00:00:00 2001 From: Yvan Date: Thu, 21 Jan 2021 10:16:42 +0800 Subject: [PATCH 02/16] =?UTF-8?q?REPORT-43833=20=E3=80=9010.0.14=E3=80=91?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1=E6=95=B0=E6=8D=AE=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5/=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E5=A2=9E=E5=8A=A0=E9=94=81=E5=AE=9A=20=E3=80=90?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0=E3=80=91=E8=BF=AD=E4=BB=A3?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=20=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D?= =?UTF-8?q?=E8=B7=AF=E3=80=91=E8=BF=AD=E4=BB=A3=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/UpdateAction.java | 52 +++++++------- .../actions/server/ConnectionListAction.java | 39 +++++++++-- .../actions/server/GlobalTableDataAction.java | 44 +++++++++++- .../design/data/BasicTableDataTreePane.java | 23 +++++++ .../connect/ConnectionComboBoxPanel.java | 48 ++++++++++++- .../connect/ItemEditableComboBoxPanel.java | 58 ++++++++-------- .../editlock/ConnectionLockChangeChecker.java | 25 +++++++ .../editlock/EditLockChangeChecker.java | 67 ++++++++++++++++++ .../design/editlock/EditLockChangeEvent.java | 25 +++++++ .../editlock/EditLockChangeListener.java | 16 +++++ .../com/fr/design/editlock/EditLockUtils.java | 69 +++++++++++++++++++ .../ServerTableDataLockChangeChecker.java | 23 +++++++ .../fr/design/gui/ibutton/UILockButton.java | 46 +++++++++++++ .../fr/design/gui/imenu/UILockMenuItem.java | 47 +++++++++++++ .../fr/design/gui/imenu/UILockMenuItemUI.java | 28 ++++++++ .../design/os/impl/DatabaseDialogAction.java | 14 +++- .../images/m_web/connection_locked_normal.svg | 15 ++++ .../fr/design/images/m_web/locked_normal.svg | 14 ++++ .../images/m_web/warningIcon_normal.svg | 21 ++++++ .../module/DesignerWorkspaceProvider.java | 14 ++++ 20 files changed, 625 insertions(+), 63 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/editlock/ConnectionLockChangeChecker.java create mode 100644 designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java create mode 100644 designer-base/src/main/java/com/fr/design/editlock/EditLockChangeEvent.java create mode 100644 designer-base/src/main/java/com/fr/design/editlock/EditLockChangeListener.java create mode 100644 designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java create mode 100644 designer-base/src/main/java/com/fr/design/editlock/ServerTableDataLockChangeChecker.java create mode 100644 designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java create mode 100644 designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItem.java create mode 100644 designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItemUI.java create mode 100644 designer-base/src/main/resources/com/fr/design/images/m_web/connection_locked_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/images/m_web/locked_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon_normal.svg diff --git a/designer-base/src/main/java/com/fr/design/actions/UpdateAction.java b/designer-base/src/main/java/com/fr/design/actions/UpdateAction.java index bb4ba4ccc..5c12ff29c 100644 --- a/designer-base/src/main/java/com/fr/design/actions/UpdateAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/UpdateAction.java @@ -339,33 +339,37 @@ public abstract class UpdateAction extends ShortCut implements Action { if (!(object instanceof AbstractButton)) { UIButton button = null; button = new UIButton(); - // 添加一个名字作为自动化测试用 - button.setName(getName()); - button.set4ToolbarButton(); - - //设置属性. - Integer mnemonicInteger = (Integer) this.getValue(Action.MNEMONIC_KEY); - if (mnemonicInteger != null) { - button.setMnemonic((char) mnemonicInteger.intValue()); - } - - button.setIcon((Icon) this.getValue(Action.SMALL_ICON)); - setPressedIcon4Button(button); - setDisabledIcon4Button(button); - button.addActionListener(this); + object = initButton(button, UIButton.class.getName()); + } - button.registerKeyboardAction(this, this.getAccelerator(), JComponent.WHEN_IN_FOCUSED_WINDOW); + return (JComponent) object; + } - this.putValue(UIButton.class.getName(), button); - button.setText(StringUtils.EMPTY); - button.setEnabled(this.isEnabled()); + protected JComponent initButton(UIButton button, String name) { + // 添加一个名字作为自动化测试用 + button.setName(getName()); + button.set4ToolbarButton(); - //peter:产生tooltip - button.setToolTipText(getToolTipText()); - object = button; + //设置属性. + Integer mnemonicInteger = (Integer) this.getValue(Action.MNEMONIC_KEY); + if (mnemonicInteger != null) { + button.setMnemonic((char) mnemonicInteger.intValue()); } - return (JComponent) object; + button.setIcon((Icon) this.getValue(Action.SMALL_ICON)); + setPressedIcon4Button(button); + setDisabledIcon4Button(button); + button.addActionListener(this); + + button.registerKeyboardAction(this, this.getAccelerator(), JComponent.WHEN_IN_FOCUSED_WINDOW); + + this.putValue(name, button); + button.setText(StringUtils.EMPTY); + button.setEnabled(this.isEnabled()); + + //peter:产生tooltip + button.setToolTipText(getToolTipText()); + return button; } /** @@ -641,14 +645,14 @@ public abstract class UpdateAction extends ShortCut implements Action { shortPinyin.append(PinyinHelper.getShortPinyin(title)).append(separator); } - private void setPressedIcon4Button(AbstractButton button) { + protected void setPressedIcon4Button(AbstractButton button) { Icon pressedIcon = (Icon) this.getValue(UpdateAction.PRESSED_ICON); if (pressedIcon != null && pressedIcon instanceof SVGIcon) { button.setPressedIcon(pressedIcon); } } - private void setDisabledIcon4Button(AbstractButton button) { + protected void setDisabledIcon4Button(AbstractButton button) { Icon disabledIcon = (Icon) this.getValue(UpdateAction.DISABLED_ICON); if (disabledIcon != null && disabledIcon instanceof SVGIcon) { button.setDisabledIcon(disabledIcon); diff --git a/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java b/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java index 820de79e5..45502c073 100644 --- a/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java @@ -1,19 +1,25 @@ package com.fr.design.actions.server; -import com.fr.base.svg.IconUtils; import com.fr.data.impl.Connection; import com.fr.design.actions.UpdateAction; import com.fr.design.data.datapane.connect.ConnectionShowPane; import com.fr.design.data.datapane.connect.DatabaseConnectionPane; import com.fr.design.dialog.BasicDialog; +import com.fr.design.editlock.ConnectionLockChangeChecker; +import com.fr.design.editlock.EditLockUtils; import com.fr.design.gui.NameInspector; +import com.fr.design.gui.ibutton.UILockButton; +import com.fr.design.gui.imenu.UILockMenuItem; +import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.menu.MenuKeySet; +import com.fr.stable.StringUtils; import com.fr.stable.os.support.OSBasedAction; import com.fr.stable.os.support.OSSupportCenter; import com.fr.design.os.impl.DatabaseDialogAction; import com.fr.file.ConnectionConfig; +import com.fr.workspace.server.lock.editlock.LockItem; -import javax.swing.*; +import javax.swing.KeyStroke; import java.awt.event.ActionEvent; import java.util.Map; @@ -53,8 +59,16 @@ public class ConnectionListAction extends UpdateAction { * @param evt 事件 */ public void actionPerformed(ActionEvent evt) { - OSBasedAction osBasedAction = OSSupportCenter.getAction(DatabaseDialogAction.class); - osBasedAction.execute(); + // 尝试为数据连接加锁 + boolean actionLock = EditLockUtils.lock(LockItem.CONNECTION); + if (!actionLock) { + // 锁定失败,代表已经被其他用户锁定,跳出弹窗提示 + EditLockUtils.showLockMessage(); + } else { + // 锁定成功,执行后续操作 + OSBasedAction osBasedAction = OSSupportCenter.getAction(DatabaseDialogAction.class); + osBasedAction.execute(); + } } /** @@ -96,4 +110,21 @@ public class ConnectionListAction extends UpdateAction { public void update() { this.setEnabled(true); } + + @Override + public UIMenuItem createMenuItem() { + Object object = this.getValue(UILockMenuItem.class.getName()); + if (object == null && !(object instanceof UILockMenuItem)) { + UILockMenuItem menuItem = new UILockMenuItem(this, EditLockUtils.CONNECTION_LOCKED_TOOLTIPS, StringUtils.EMPTY, LockItem.CONNECTION); + // 设置名字用作单元测 + menuItem.setName(getName()); + setPressedIcon4Button(menuItem); + setDisabledIcon4Button(menuItem); + object = menuItem; + + this.putValue(UILockMenuItem.class.getName(), object); + ConnectionLockChangeChecker.getInstance().addEditLockChangeListener((UILockMenuItem)object); + } + return (UILockMenuItem) object; + } } diff --git a/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java b/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java index 468fb1f98..14795066d 100644 --- a/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java @@ -4,7 +4,6 @@ package com.fr.design.actions.server; import com.fr.base.TableData; -import com.fr.base.svg.IconUtils; import com.fr.design.DesignModelAdapter; import com.fr.design.actions.UpdateAction; import com.fr.design.data.DesignTableDataManager; @@ -13,18 +12,24 @@ import com.fr.design.data.tabledata.ResponseDataSourceChange; import com.fr.design.data.tabledata.tabledatapane.TableDataManagerPane; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.editlock.EditLockUtils; +import com.fr.design.editlock.ServerTableDataLockChangeChecker; import com.fr.design.gui.NameInspector; +import com.fr.design.gui.imenu.UILockMenuItem; +import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.menu.MenuKeySet; import com.fr.file.TableDataConfig; +import com.fr.stable.StringUtils; import com.fr.transaction.CallBackAdaptor; import com.fr.transaction.Configurations; import com.fr.transaction.WorkerFacade; +import com.fr.workspace.server.lock.editlock.LockItem; import javax.swing.KeyStroke; -import java.awt.*; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.util.HashMap; import java.util.Map; @@ -66,6 +71,14 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS * @param evt 事件 */ public void actionPerformed(ActionEvent evt) { + // 尝试为服务器数据集加锁 + boolean actionLock = EditLockUtils.lock(LockItem.SERVER_TABLE_DATA); + if (!actionLock) { + // 锁定失败,代表已经被其他用户锁定,跳出弹窗提示 + EditLockUtils.showLockMessage(); + return; + } + // 锁定成功,执行后续操作 final DesignerFrame designerFrame = DesignerContext.getDesignerFrame(); final TableDataConfig tableDataConfig = TableDataConfig.getInstance(); final TableDataManagerPane globalTableDataPane = new TableDataManagerPane() { @@ -90,7 +103,8 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS globalTableDataDialog.setDoOKSucceed(false); return; } - + // 关闭服务器数据集页面,为其解锁 + EditLockUtils.unlock(LockItem.SERVER_TABLE_DATA); DesignTableDataManager.clearGlobalDs(); // 保存时 移除服务器数据集列名缓存 for (String name : tableDataConfig.getTableDatas().keySet()) { @@ -117,6 +131,13 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS } })); } + + @Override + public void doCancel() { + super.doCancel(); + // 关闭服务器数据集页面,为其解锁 + EditLockUtils.unlock(LockItem.SERVER_TABLE_DATA); + } }); globalTableDataDialog.setVisible(true); } @@ -166,4 +187,21 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS public void fireDSChanged(Map map) { DesignTableDataManager.fireDSChanged(map); } + + @Override + public UIMenuItem createMenuItem() { + Object object = this.getValue(UILockMenuItem.class.getName()); + if (object == null && !(object instanceof UILockMenuItem)) { + UILockMenuItem menuItem = new UILockMenuItem(this, EditLockUtils.SERVER_TABLEDATA_LOCKED_TOOLTIPS, StringUtils.EMPTY, LockItem.SERVER_TABLE_DATA); + // 设置名字用作单元测 + menuItem.setName(getName()); + setPressedIcon4Button(menuItem); + setDisabledIcon4Button(menuItem); + object = menuItem; + + this.putValue(UILockMenuItem.class.getName(), object); + ServerTableDataLockChangeChecker.getInstance().addEditLockChangeListener((UILockMenuItem)object); + } + return (UILockMenuItem) object; + } } diff --git a/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java b/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java index 83740f685..34482d0d2 100644 --- a/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java +++ b/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java @@ -18,7 +18,10 @@ import com.fr.design.data.tabledata.wrapper.TableDataWrapper; import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; +import com.fr.design.editlock.ConnectionLockChangeChecker; +import com.fr.design.editlock.EditLockUtils; import com.fr.design.gui.ibutton.UIHeadGroup; +import com.fr.design.gui.ibutton.UILockButton; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; import com.fr.design.icon.IconPathConstants; @@ -31,8 +34,11 @@ import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; +import javax.swing.AbstractButton; +import javax.swing.Action; import javax.swing.DefaultCellEditor; import javax.swing.Icon; +import javax.swing.JComponent; import javax.swing.JTree; import javax.swing.event.CellEditorListener; import javax.swing.event.ChangeEvent; @@ -439,6 +445,23 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp this.setMnemonic('D'); this.setSmallIcon("/com/fr/design/images/m_web/connection"); } + + @Override + public JComponent createToolBarComponent() { + Object object = this.getValue(UILockButton.class.getName()); + if (!(object instanceof AbstractButton)) { + UILockButton button = new UILockButton( + EditLockUtils.CONNECTION_LOCKED_ICON, + (Icon) this.getValue(Action.SMALL_ICON), + EditLockUtils.CONNECTION_LOCKED_TOOLTIPS, + getToolTipText() + ); + initButton(button, UILockButton.class.getName()); + object = button; + ConnectionLockChangeChecker.getInstance().addEditLockChangeListener((UILockButton)object); + } + return (JComponent) object; + } } /** diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java index f4a7910b1..91813418b 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java @@ -1,5 +1,6 @@ package com.fr.design.data.datapane.connect; +import com.fr.base.svg.IconUtils; import com.fr.data.impl.AbstractDatabaseConnection; import com.fr.data.impl.Connection; import com.fr.data.impl.NameDatabaseConnection; @@ -7,6 +8,10 @@ import com.fr.design.DesignerEnvManager; import com.fr.design.actions.server.ConnectionListAction; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.editlock.ConnectionLockChangeChecker; +import com.fr.design.editlock.EditLockUtils; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ibutton.UILockButton; import com.fr.design.mainframe.DesignerContext; import com.fr.file.ConnectionConfig; import com.fr.general.ComparatorUtils; @@ -16,8 +21,12 @@ import com.fr.transaction.Configurations; import com.fr.transaction.WorkerFacade; import com.fr.workspace.WorkContext; import com.fr.workspace.server.connection.DBConnectAuth; +import com.fr.workspace.server.lock.editlock.LockItem; import javax.swing.SwingUtilities; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; @@ -56,6 +65,25 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { refreshItems(); } + @Override + protected UIButton initEditButton(UIButton editButton, Dimension buttonSize) { + editButton = new UILockButton( + EditLockUtils.CONNECTION_LOCKED_ICON, + IconUtils.readIcon("/com/fr/design/images/m_web/connection"), + EditLockUtils.CONNECTION_LOCKED_TOOLTIPS, + StringUtils.EMPTY + ); + editButton.setIcon(IconUtils.readIcon("/com/fr/design/images/m_web/connection")); + editButton.setPreferredSize(buttonSize); + editButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + editItems(); + } + }); + ConnectionLockChangeChecker.getInstance().addEditLockChangeListener((UILockButton) editButton); + return editButton; + } + /* * 刷新ComboBox.items */ @@ -97,6 +125,14 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { * 弹出对话框编辑Items */ protected void editItems() { + // 尝试为数据连接加锁 + boolean actionLock = EditLockUtils.lock(LockItem.CONNECTION); + if (!actionLock) { + // 锁定失败,代表已经被其他用户锁定,跳出弹窗提示 + EditLockUtils.showLockMessage(); + return; + } + // 锁定成功,执行后续操作 final ConnectionListPane connectionListPane = new ConnectionListPane(); final ConnectionConfig connectionConfig = ConnectionConfig.getInstance(); ConnectionConfig cloned = connectionConfig.mirror(); @@ -109,7 +145,8 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { connectionListDialog.setDoOKSucceed(false); return; } - + // 关闭定义数据连接页面,为其解锁 + EditLockUtils.unlock(LockItem.CONNECTION); Configurations.modify(new WorkerFacade(ConnectionConfig.class) { @Override public void run() { @@ -129,6 +166,13 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { })); } + + @Override + public void doCancel() { + // 关闭定义数据连接页面,为其解锁 + super.doCancel(); + EditLockUtils.unlock(LockItem.CONNECTION); + } }); connectionListDialog.setVisible(true); refreshItems(); @@ -158,4 +202,4 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { } } } -} \ No newline at end of file +} diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ItemEditableComboBoxPanel.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ItemEditableComboBoxPanel.java index 1c61eea26..f06d1405b 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ItemEditableComboBoxPanel.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ItemEditableComboBoxPanel.java @@ -12,7 +12,7 @@ import java.awt.event.ActionListener; public abstract class ItemEditableComboBoxPanel extends JPanel { /** - * + * */ private static final long serialVersionUID = 1L; @@ -21,37 +21,29 @@ public abstract class ItemEditableComboBoxPanel extends JPanel { return ""; } }; - + protected UIComboBox itemComboBox; protected UIButton editButton; protected UIButton refreshButton; - + public ItemEditableComboBoxPanel() { super(); - + initComponents(); } - + protected void initComponents() { this.setLayout(FRGUIPaneFactory.createM_BorderLayout()); - + Dimension buttonSize = new Dimension(26, 20); itemComboBox = new UIComboBox(); itemComboBox.setEnabled(true); this.add(itemComboBox, BorderLayout.CENTER); - - editButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/control/control-center2.png")); refreshButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/control/refresh.png")); JPanel jPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_Pane(2, 4 ,4); + editButton = initEditButton(editButton, buttonSize); jPanel.add(editButton); jPanel.add(refreshButton); this.add(jPanel, BorderLayout.EAST); - Dimension buttonSize = new Dimension(26, 20); - editButton.setPreferredSize(buttonSize); - editButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - editItems(); - } - }); refreshButton.setPreferredSize(buttonSize); refreshButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -59,32 +51,44 @@ public abstract class ItemEditableComboBoxPanel extends JPanel { } }); } - + + protected UIButton initEditButton(UIButton editButton, Dimension buttonSize) { + editButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/control/control-center2.png")); + editButton.setPreferredSize(buttonSize); + editButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + editItems(); + } + }); + return editButton; + } + + /** * 给itemComboBox添加ActionListener */ public void addComboBoxActionListener(ActionListener l) { itemComboBox.addActionListener(l); } - + /* * 刷新itemComboBox的内容 */ protected void refreshItems() { // 记录原来选中的Item,重新加载后需要再次选中 Object lastSelectedItem = itemComboBox.getSelectedItem(); - + DefaultComboBoxModel model = ((DefaultComboBoxModel) itemComboBox.getModel()); model.removeAllElements(); - + // 先加EMPTY,再加items model.addElement(EMPTY); - + java.util.Iterator itemIt = items(); while(itemIt.hasNext()) { model.addElement(itemIt.next()); } - + // 再次选中之前选中的Item int idx = model.getIndexOf(lastSelectedItem); if(idx < 0) { @@ -92,16 +96,16 @@ public abstract class ItemEditableComboBoxPanel extends JPanel { } itemComboBox.setSelectedIndex(idx); } - + /* * 得到其中的itemComboBox所选中的Item */ public String getSelectedItem() { Object selected = itemComboBox.getSelectedItem(); - + return selected instanceof String ? (String)selected : null; } - + /* * 选中name项 */ @@ -109,14 +113,14 @@ public abstract class ItemEditableComboBoxPanel extends JPanel { DefaultComboBoxModel model = ((DefaultComboBoxModel) itemComboBox.getModel()); model.setSelectedItem(name); } - + /* * 刷新ComboBox.items */ protected abstract java.util.Iterator items(); - + /* * 弹出对话框编辑Items */ protected abstract void editItems(); -} \ No newline at end of file +} diff --git a/designer-base/src/main/java/com/fr/design/editlock/ConnectionLockChangeChecker.java b/designer-base/src/main/java/com/fr/design/editlock/ConnectionLockChangeChecker.java new file mode 100644 index 000000000..ac80cd53c --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/editlock/ConnectionLockChangeChecker.java @@ -0,0 +1,25 @@ +package com.fr.design.editlock; + + +import com.fr.workspace.server.lock.editlock.LockItem; + +/** + * @author Yvan + * @version 10.0 + * Created by Yvan on 2021/1/20 + * 定义数据连接的checker + */ +public class ConnectionLockChangeChecker extends EditLockChangeChecker{ + + private static class Holder { + private static final ConnectionLockChangeChecker INSTANCE = new ConnectionLockChangeChecker(); + } + + public static ConnectionLockChangeChecker getInstance() { + return ConnectionLockChangeChecker.Holder.INSTANCE; + } + + public ConnectionLockChangeChecker() { + this.lockItem = LockItem.CONNECTION; + } +} diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java new file mode 100644 index 000000000..13ac921e3 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java @@ -0,0 +1,67 @@ +package com.fr.design.editlock; + +import com.fr.concurrent.NamedThreadFactory; +import com.fr.log.FineLoggerFactory; +import com.fr.workspace.WorkContext; +import com.fr.workspace.server.lock.editlock.EditLockOperator; +import com.fr.workspace.server.lock.editlock.LockItem; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +/** + * @author Yvan + * @version 10.0 + * Created by Yvan on 2021/1/19 + * 判断当前设计器在远程设计服务器中的锁状态是否发生了改变 + */ +public abstract class EditLockChangeChecker { + + private static final int INTERVAL = 30000; + private ScheduledExecutorService scheduler; + protected LockItem lockItem; + private boolean isLocked = false; + private List listeners = new ArrayList<>(); + + /** + * 轮询任务,如果是远程设计状态,每隔30s查询一次相应lockItem的锁状态是否改变 + */ + public void start() { + this.scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("EditLockChangeChecker")); + this.scheduler.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + // 判断是否为远程设计环境 + if (!WorkContext.getCurrent().isLocal()) { + try { + EditLockOperator operator = WorkContext.getCurrent().get(EditLockOperator.class); + boolean locked = operator.isLocked(lockItem); + if (isLocked != locked) { + isLocked = locked; + fireChange(); + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + } + }, 0, INTERVAL, TimeUnit.MILLISECONDS); + } + + public void stop() { + this.scheduler.shutdown(); + } + + public void addEditLockChangeListener(EditLockChangeListener listener) { + this.listeners.add(listener); + } + + private void fireChange() { + for (EditLockChangeListener listener : this.listeners) { + listener.updateLockedState(new EditLockChangeEvent(isLocked)); + } + } +} diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeEvent.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeEvent.java new file mode 100644 index 000000000..66420fd0b --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeEvent.java @@ -0,0 +1,25 @@ +package com.fr.design.editlock; + +import java.util.EventObject; + +/** + * @author Yvan + * @version 10.0 + * Created by Yvan on 2021/1/20 + */ +public class EditLockChangeEvent extends EventObject { + + private boolean isLocked; + + /** + * @param source 锁状态发生了改变,且当前锁状态就是source + */ + public EditLockChangeEvent(boolean source) { + super(source); + this.isLocked = source; + } + + public boolean isLocked() { + return isLocked; + } +} diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeListener.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeListener.java new file mode 100644 index 000000000..dcabe87cc --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeListener.java @@ -0,0 +1,16 @@ +package com.fr.design.editlock; + +import java.util.EventListener; + +/** + * @author Yvan + * @version 10.0 + * Created by Yvan on 2021/1/20 + */ +public interface EditLockChangeListener extends EventListener { + /** + * 锁定状态改变后执行的动作 + * @param event 事件 + */ + void updateLockedState(EditLockChangeEvent event); +} diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java new file mode 100644 index 000000000..20708462d --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java @@ -0,0 +1,69 @@ +package com.fr.design.editlock; + +import com.fr.base.svg.IconUtils; +import com.fr.base.svg.SVGLoader; +import com.fr.design.dialog.FineJOptionPane; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.DesignerContext; +import com.fr.workspace.WorkContext; +import com.fr.workspace.server.lock.editlock.EditLockOperator; +import com.fr.workspace.server.lock.editlock.LockItem; +import org.jetbrains.annotations.Nullable; + +import javax.swing.Icon; +import javax.swing.JOptionPane; +import java.awt.Image; + +/** + * @author Yvan + * @version 10.0 + * Created by Yvan on 2021/1/20 + * 关于编辑锁定的一些常量和静态方法 + */ +public class EditLockUtils { + + /** + * 数据连接锁定标志 + */ + public static final Icon CONNECTION_LOCKED_ICON = IconUtils.readIcon("/com/fr/design/images/m_web/connection_locked"); + + /** + * 小锁图片 + */ + public static final @Nullable Image LOCKED_IMAGE = SVGLoader.load("/com/fr/design/images/m_web/locked_normal.svg"); + + public static final Icon TOOLTIPS_ICON = IconUtils.readIcon("/com/fr/design/images/m_web/warningIcon"); + + /** + * 数据连接锁定中 + */ + public static final String CONNECTION_LOCKED_TOOLTIPS = Toolkit.i18nText("Fine_Designer_Remote_Design_Data_Connection_Locked"); + + /** + * 服务器数据集锁定中 + */ + public static final String SERVER_TABLEDATA_LOCKED_TOOLTIPS = Toolkit.i18nText("Fine_Designer_Remote_Design_Server_TableData_Locked"); + + public static final String LOCKED_MESSAGE = Toolkit.i18nText("Fine_Designer_Remote_Design_Locked_Message"); + + public static final String TOOLTIPS = Toolkit.i18nText("Fine-Engine_Report_Tooltips"); + + /** + * 已经被锁,跳出弹窗提示 + */ + public static void showLockMessage() { + FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), EditLockUtils.LOCKED_MESSAGE, EditLockUtils.TOOLTIPS, JOptionPane.INFORMATION_MESSAGE, EditLockUtils.TOOLTIPS_ICON); + } + + public static boolean lock(LockItem lockItem) { + return WorkContext.getCurrent().get(EditLockOperator.class).lock(lockItem); + } + + public static boolean unlock(LockItem lockItem) { + return WorkContext.getCurrent().get(EditLockOperator.class).unlock(lockItem); + } + + public static boolean isLocked(LockItem lockItem) { + return WorkContext.getCurrent().get(EditLockOperator.class).isLocked(lockItem); + } +} diff --git a/designer-base/src/main/java/com/fr/design/editlock/ServerTableDataLockChangeChecker.java b/designer-base/src/main/java/com/fr/design/editlock/ServerTableDataLockChangeChecker.java new file mode 100644 index 000000000..a3f2bbbf4 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/editlock/ServerTableDataLockChangeChecker.java @@ -0,0 +1,23 @@ +package com.fr.design.editlock; + +import com.fr.workspace.server.lock.editlock.LockItem; + +/** + * @author Yvan + * @version 10.0 + * Created by Yvan on 2021/1/20 + * 服务器数据集的checker + */ +public class ServerTableDataLockChangeChecker extends EditLockChangeChecker{ + private static class Holder { + private static final ServerTableDataLockChangeChecker INSTANCE = new ServerTableDataLockChangeChecker(); + } + + public static ServerTableDataLockChangeChecker getInstance() { + return ServerTableDataLockChangeChecker.Holder.INSTANCE; + } + + public ServerTableDataLockChangeChecker() { + this.lockItem = LockItem.SERVER_TABLE_DATA; + } +} diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java new file mode 100644 index 000000000..aa643b6c1 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java @@ -0,0 +1,46 @@ +package com.fr.design.gui.ibutton; + +import com.fr.design.editlock.EditLockChangeEvent; +import com.fr.design.editlock.EditLockChangeListener; + +import javax.swing.Icon; + +/** + * @author Yvan + * @version 10.0 + * Created by Yvan on 2021/1/20 + */ +public class UILockButton extends UIButton implements EditLockChangeListener { + + /** + * 锁定状态图标 + */ + private Icon lockedIcon; + /** + * 正常状态图标 + */ + private Icon normalIcon; + /** + * 锁定状态的提示信息 + */ + private String lockedTooltips; + /** + * 正常状态的提示信息 + */ + private String normalTooltips; + + public UILockButton(Icon lockedIcon, Icon normalIcon, String lockedTooltips, String normalTooltips) { + super(); + this.lockedIcon = lockedIcon; + this.normalIcon = normalIcon; + this.lockedTooltips = lockedTooltips; + this.normalTooltips = normalTooltips; + } + + @Override + public void updateLockedState(EditLockChangeEvent event) { + this.setIcon(event.isLocked() ? lockedIcon : normalIcon); + this.setToolTipText(event.isLocked() ? lockedTooltips : normalTooltips); + this.repaint(); + } +} diff --git a/designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItem.java b/designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItem.java new file mode 100644 index 000000000..092b76516 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItem.java @@ -0,0 +1,47 @@ +package com.fr.design.gui.imenu; + +import com.fr.design.editlock.EditLockChangeEvent; +import com.fr.design.editlock.EditLockChangeListener; +import com.fr.workspace.server.lock.editlock.LockItem; + +import javax.swing.Action; + +/** + * @author Yvan + * @version 10.0 + * Created by Yvan on 2021/1/20 + */ +public class UILockMenuItem extends UIMenuItem implements EditLockChangeListener { + + /** + * 锁定状态的提示信息 + */ + private String lockedTooltips; + /** + * 正常状态的提示信息 + */ + private String normalTooltips; + + /** + * 当前锁定项 + */ + private LockItem lockItem; + + public UILockMenuItem(Action action, String lockedTooltips, String normalTooltips, LockItem lockItem) { + super(action); + this.lockedTooltips = lockedTooltips; + this.normalTooltips = normalTooltips; + this.lockItem = lockItem; + setUI(new UILockMenuItemUI()); + } + + public LockItem getLockItem() { + return lockItem; + } + + @Override + public void updateLockedState(EditLockChangeEvent event) { + this.setToolTipText(event.isLocked() ? lockedTooltips : normalTooltips); + this.repaint(); + } +} diff --git a/designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItemUI.java b/designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItemUI.java new file mode 100644 index 000000000..c0f70795b --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItemUI.java @@ -0,0 +1,28 @@ +package com.fr.design.gui.imenu; + +import com.fr.design.editlock.EditLockUtils; + +import javax.swing.JMenuItem; +import java.awt.Graphics; +import java.awt.Rectangle; + +/** + * @author Yvan + * @version 10.0 + * Created by Yvan on 2021/1/20 + */ +public class UILockMenuItemUI extends UIMenuItemUI{ + + @Override + protected void paintText(Graphics g, JMenuItem menuItem, Rectangle textRect, String text) { + super.paintText(g, menuItem, textRect, text); + // 除了绘制text之外,还需要画一下锁定图标 + UILockMenuItem lockMenuItem = (UILockMenuItem) menuItem; + if (EditLockUtils.isLocked(lockMenuItem.getLockItem())) { + int width = menuItem.getWidth(); + int height = menuItem.getHeight(); + g.drawImage(EditLockUtils.LOCKED_IMAGE, (int) Math.round(width * 0.9), (int) Math.round(height * 0.1), 16, 16, null); + } + + } +} diff --git a/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java b/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java index acd906897..3d343ab93 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java @@ -1,18 +1,17 @@ package com.fr.design.os.impl; -import com.fr.config.ServerPreferenceConfig; import com.fr.design.data.datapane.connect.ConnectionManagerPane; -import com.fr.design.dcm.UniversalDatabaseOpener; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.editlock.EditLockUtils; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.file.ConnectionConfig; -import com.fr.stable.os.OperatingSystem; import com.fr.stable.os.support.OSBasedAction; import com.fr.transaction.CallBackAdaptor; import com.fr.transaction.Configurations; import com.fr.transaction.WorkerFacade; +import com.fr.workspace.server.lock.editlock.LockItem; import static com.fr.design.actions.server.ConnectionListAction.doWithDatasourceManager; /** @@ -53,6 +52,8 @@ public class DatabaseDialogAction implements OSBasedAction { databaseListDialog.setDoOKSucceed(false); return; } + // 定义数据连接弹窗关闭后,解锁 + EditLockUtils.unlock(LockItem.CONNECTION); Configurations.modify(new WorkerFacade(ConnectionConfig.class) { @Override public void run() { @@ -71,6 +72,13 @@ public class DatabaseDialogAction implements OSBasedAction { } })); } + + @Override + public void doCancel() { + super.doCancel(); + // 定义数据连接弹窗关闭后,解锁 + EditLockUtils.unlock(LockItem.CONNECTION); + } }); databaseListDialog.setVisible(true); } diff --git a/designer-base/src/main/resources/com/fr/design/images/m_web/connection_locked_normal.svg b/designer-base/src/main/resources/com/fr/design/images/m_web/connection_locked_normal.svg new file mode 100644 index 000000000..b1b9d1792 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/images/m_web/connection_locked_normal.svg @@ -0,0 +1,15 @@ + + + 编组 3 + + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/images/m_web/locked_normal.svg b/designer-base/src/main/resources/com/fr/design/images/m_web/locked_normal.svg new file mode 100644 index 000000000..b3b2ac74f --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/images/m_web/locked_normal.svg @@ -0,0 +1,14 @@ + + + 编组 2 + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon_normal.svg b/designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon_normal.svg new file mode 100644 index 000000000..b7748925d --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon_normal.svg @@ -0,0 +1,21 @@ + + + icon_WarningIcon_normal + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerWorkspaceProvider.java b/designer-realize/src/main/java/com/fr/start/module/DesignerWorkspaceProvider.java index a7ef4f108..0a572e672 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerWorkspaceProvider.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerWorkspaceProvider.java @@ -3,6 +3,8 @@ package com.fr.start.module; import com.fr.design.DesignerEnvManager; import com.fr.design.EnvChangeEntrance; import com.fr.design.constants.DesignerLaunchStatus; +import com.fr.design.editlock.ConnectionLockChangeChecker; +import com.fr.design.editlock.ServerTableDataLockChangeChecker; import com.fr.design.env.DesignerWorkspaceGenerator; import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.env.LocalDesignerWorkspaceInfo; @@ -88,6 +90,12 @@ public class DesignerWorkspaceProvider extends Activator { } } pluginErrorRemind(); + editLockCheckerStart(); + } + + private void editLockCheckerStart() { + ConnectionLockChangeChecker.getInstance().start(); + ServerTableDataLockChangeChecker.getInstance().start(); } private void pluginErrorRemind() { @@ -102,6 +110,12 @@ public class DesignerWorkspaceProvider extends Activator { @Override public void stop() { // void + editLockCheckerStop(); + } + + private void editLockCheckerStop() { + ConnectionLockChangeChecker.getInstance().stop(); + ServerTableDataLockChangeChecker.getInstance().stop(); } @Override From 389483541d0ae4c56af540024925973d33281693 Mon Sep 17 00:00:00 2001 From: Yvan Date: Thu, 21 Jan 2021 14:36:38 +0800 Subject: [PATCH 03/16] =?UTF-8?q?REPORT-43833=20=E3=80=9010.0.14=E3=80=91?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1=E6=95=B0=E6=8D=AE=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5/=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E5=A2=9E=E5=8A=A0=E9=94=81=E5=AE=9A=20=E3=80=90?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0=E3=80=91=E8=87=AA=E6=B5=8B?= =?UTF-8?q?+=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9Bbug=20=E3=80=90=E6=94=B9?= =?UTF-8?q?=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91=E8=87=AA=E6=B5=8B+?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9Bbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/server/ConnectionListAction.java | 2 +- .../actions/server/GlobalTableDataAction.java | 2 +- .../connect/ConnectionComboBoxPanel.java | 1 - .../com/fr/design/editlock/EditLockUtils.java | 14 ++++++++++-- .../fr/design/gui/ibutton/UILockButton.java | 9 ++++++++ .../fr/design/images/m_web/warningIcon.png | Bin 0 -> 1190 bytes .../images/m_web/warningIcon_normal.svg | 21 ------------------ 7 files changed, 23 insertions(+), 26 deletions(-) create mode 100644 designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon.png delete mode 100644 designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon_normal.svg diff --git a/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java b/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java index 45502c073..1fd555e82 100644 --- a/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java @@ -115,7 +115,7 @@ public class ConnectionListAction extends UpdateAction { public UIMenuItem createMenuItem() { Object object = this.getValue(UILockMenuItem.class.getName()); if (object == null && !(object instanceof UILockMenuItem)) { - UILockMenuItem menuItem = new UILockMenuItem(this, EditLockUtils.CONNECTION_LOCKED_TOOLTIPS, StringUtils.EMPTY, LockItem.CONNECTION); + UILockMenuItem menuItem = new UILockMenuItem(this, EditLockUtils.CONNECTION_LOCKED_TOOLTIPS, null, LockItem.CONNECTION); // 设置名字用作单元测 menuItem.setName(getName()); setPressedIcon4Button(menuItem); diff --git a/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java b/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java index 14795066d..44d38db9f 100644 --- a/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java @@ -192,7 +192,7 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS public UIMenuItem createMenuItem() { Object object = this.getValue(UILockMenuItem.class.getName()); if (object == null && !(object instanceof UILockMenuItem)) { - UILockMenuItem menuItem = new UILockMenuItem(this, EditLockUtils.SERVER_TABLEDATA_LOCKED_TOOLTIPS, StringUtils.EMPTY, LockItem.SERVER_TABLE_DATA); + UILockMenuItem menuItem = new UILockMenuItem(this, EditLockUtils.SERVER_TABLEDATA_LOCKED_TOOLTIPS, null, LockItem.SERVER_TABLE_DATA); // 设置名字用作单元测 menuItem.setName(getName()); setPressedIcon4Button(menuItem); diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java index 91813418b..a5ab12ff9 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java @@ -73,7 +73,6 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { EditLockUtils.CONNECTION_LOCKED_TOOLTIPS, StringUtils.EMPTY ); - editButton.setIcon(IconUtils.readIcon("/com/fr/design/images/m_web/connection")); editButton.setPreferredSize(buttonSize); editButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java index 20708462d..baa3543f8 100644 --- a/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java @@ -5,6 +5,7 @@ import com.fr.base.svg.SVGLoader; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; +import com.fr.general.IOUtils; import com.fr.workspace.WorkContext; import com.fr.workspace.server.lock.editlock.EditLockOperator; import com.fr.workspace.server.lock.editlock.LockItem; @@ -32,7 +33,10 @@ public class EditLockUtils { */ public static final @Nullable Image LOCKED_IMAGE = SVGLoader.load("/com/fr/design/images/m_web/locked_normal.svg"); - public static final Icon TOOLTIPS_ICON = IconUtils.readIcon("/com/fr/design/images/m_web/warningIcon"); + /** + * 提示弹窗中的提示标志 + */ + public static final Icon TOOLTIPS_ICON = IOUtils.readIcon("/com/fr/design/images/m_web/warningIcon.png"); /** * 数据连接锁定中 @@ -44,9 +48,15 @@ public class EditLockUtils { */ public static final String SERVER_TABLEDATA_LOCKED_TOOLTIPS = Toolkit.i18nText("Fine_Designer_Remote_Design_Server_TableData_Locked"); + /** + * 提示弹窗中的提示信息 + */ public static final String LOCKED_MESSAGE = Toolkit.i18nText("Fine_Designer_Remote_Design_Locked_Message"); - public static final String TOOLTIPS = Toolkit.i18nText("Fine-Engine_Report_Tooltips"); + /** + * 提示弹窗中的标题 + */ + public static final String TOOLTIPS = Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Title_Hint"); /** * 已经被锁,跳出弹窗提示 diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java index aa643b6c1..b5534f609 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java @@ -2,6 +2,8 @@ package com.fr.design.gui.ibutton; import com.fr.design.editlock.EditLockChangeEvent; import com.fr.design.editlock.EditLockChangeListener; +import com.fr.design.editlock.EditLockUtils; +import com.fr.workspace.server.lock.editlock.LockItem; import javax.swing.Icon; @@ -35,6 +37,13 @@ public class UILockButton extends UIButton implements EditLockChangeListener { this.normalIcon = normalIcon; this.lockedTooltips = lockedTooltips; this.normalTooltips = normalTooltips; + init(); + } + + private void init() { + boolean locked = EditLockUtils.isLocked(LockItem.CONNECTION); + this.setIcon(locked ? lockedIcon : normalIcon); + this.setToolTipText(locked ? lockedTooltips : normalTooltips); } @Override diff --git a/designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon.png b/designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..41c7c703a2d614f1a7321ae76f1f78be8f9ea3fe GIT binary patch literal 1190 zcmV;X1X=ruP)1-1EWA`z1MZ43<~dJBuW(d zqR2O)A%N(DzUO(q=QGcqIdkqvQSu)ENE2)w17r4+we-BR-j1J7NGYMrsbraEyDF3}B1$8+)wd1qVu5D)7s$ReGj%6$CtzGU87rmY>PG96JZOT!9p?!%^UudFV0kfJR~&xa_LvUCs{rDGyvb->N-@7 zgf~+|oE8P)IcAj(Z+{i_U9W|};rvhop?77PGvI>LVkQW`8-jX0CgnDr!2ynWwEg8e za?66#I*gPSxIG?o=5Y?xHwyYQ{_}#5ZpUz5V$GBy|X>4*#G}+su72E_9@8kBjF=pk~ zqH( zG+>qmr{($3I57|l7n=fyVC&O(V*8K_cG9@&a+;GF{OR2PS?2h5nXT@CU+$ctFpzrPy8@nVyJv+TeIvt*G(VWn5Sr zqQT`}t0Pm1)KdNfQvO+O_HUH(oF?=38aIAxUm4H|;xao}P!qI1h%6Vu@oexgenR^+ z5_|Ou296Ue@hyVmA^s>n1dsG8aKuH7#7cb${_ubn;T7C7Q#(wQ&`VeR;;Sm6_H0$d z!YJO!eF04cqylTPFzVsw)7N{cqE0Nx?BTxM@%6?j_1*>{vj?8|?%q-qpPiT&UqITg z?>9oci9eg3!)@`w;#U8Eh7|H9e%t*6x54i#BU5MZ0CBX*Zs}O8*#H0l07*qoM6N<$ Ef^m~eUjP6A literal 0 HcmV?d00001 diff --git a/designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon_normal.svg b/designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon_normal.svg deleted file mode 100644 index b7748925d..000000000 --- a/designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon_normal.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - icon_WarningIcon_normal - - - - - - - - - - - - - - - - - - \ No newline at end of file From 7b271caeba1a2d19c15c6fd6e06ab445bd943672 Mon Sep 17 00:00:00 2001 From: Yvan Date: Thu, 21 Jan 2021 20:04:58 +0800 Subject: [PATCH 04/16] =?UTF-8?q?REPORT-43833=20=E3=80=9010.0.14=E3=80=91?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1=E6=95=B0=E6=8D=AE=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5/=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E5=A2=9E=E5=8A=A0=E9=94=81=E5=AE=9A=20=E5=B0=86?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E5=85=B3=E9=97=AD=E5=90=8E=E8=A7=A3=E9=94=81?= =?UTF-8?q?=E7=9A=84=E6=93=8D=E4=BD=9C=EF=BC=8C=E6=94=BE=E5=88=B0afterComm?= =?UTF-8?q?it=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/server/GlobalTableDataAction.java | 4 ++-- .../main/java/com/fr/design/os/impl/DatabaseDialogAction.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java b/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java index 44d38db9f..d41af3205 100644 --- a/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java @@ -103,8 +103,6 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS globalTableDataDialog.setDoOKSucceed(false); return; } - // 关闭服务器数据集页面,为其解锁 - EditLockUtils.unlock(LockItem.SERVER_TABLE_DATA); DesignTableDataManager.clearGlobalDs(); // 保存时 移除服务器数据集列名缓存 for (String name : tableDataConfig.getTableDatas().keySet()) { @@ -128,6 +126,8 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS // 刷新共有数据集 TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()); fireDSChanged(globalTableDataPane.getDsChangedNameMap()); + // 关闭服务器数据集页面,为其解锁 + EditLockUtils.unlock(LockItem.SERVER_TABLE_DATA); } })); } diff --git a/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java b/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java index 3d343ab93..ae0f8d1cb 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java @@ -52,8 +52,6 @@ public class DatabaseDialogAction implements OSBasedAction { databaseListDialog.setDoOKSucceed(false); return; } - // 定义数据连接弹窗关闭后,解锁 - EditLockUtils.unlock(LockItem.CONNECTION); Configurations.modify(new WorkerFacade(ConnectionConfig.class) { @Override public void run() { @@ -69,6 +67,8 @@ public class DatabaseDialogAction implements OSBasedAction { @Override public void afterCommit() { DesignerContext.getDesignerBean("databasename").refreshBeanElement(); + // 定义数据连接弹窗关闭后,解锁 + EditLockUtils.unlock(LockItem.CONNECTION); } })); } From 7cc2ffb8fdb68e1c3621ab48b0dfc5400fd86cb8 Mon Sep 17 00:00:00 2001 From: Yvan Date: Thu, 21 Jan 2021 20:10:13 +0800 Subject: [PATCH 05/16] =?UTF-8?q?REPORT-43833=20=E3=80=9010.0.14=E3=80=91?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1=E6=95=B0=E6=8D=AE=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5/=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E5=A2=9E=E5=8A=A0=E9=94=81=E5=AE=9A=20=E5=B0=86?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E7=BB=84=E4=BB=B6=E7=9A=84=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=94=BE=E5=88=B0EDT=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/editlock/EditLockChangeChecker.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java index 13ac921e3..951bea334 100644 --- a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java @@ -1,6 +1,7 @@ package com.fr.design.editlock; import com.fr.concurrent.NamedThreadFactory; +import com.fr.design.ui.util.UIUtil; import com.fr.log.FineLoggerFactory; import com.fr.workspace.WorkContext; import com.fr.workspace.server.lock.editlock.EditLockOperator; @@ -60,8 +61,13 @@ public abstract class EditLockChangeChecker { } private void fireChange() { - for (EditLockChangeListener listener : this.listeners) { - listener.updateLockedState(new EditLockChangeEvent(isLocked)); - } + UIUtil.invokeLaterIfNeeded(new Runnable() { + @Override + public void run() { + for (EditLockChangeListener listener : EditLockChangeChecker.this.listeners) { + listener.updateLockedState(new EditLockChangeEvent(isLocked)); + } + } + }); } } From e5585ff488ed78cd428a8a23ba4606243d7a61ea Mon Sep 17 00:00:00 2001 From: Yvan Date: Fri, 22 Jan 2021 15:16:45 +0800 Subject: [PATCH 06/16] =?UTF-8?q?REPORT-43833=20=E3=80=9010.0.14=E3=80=91?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1=E6=95=B0=E6=8D=AE=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5/=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E5=A2=9E=E5=8A=A0=E9=94=81=E5=AE=9A=201.=20=E5=B0=86?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=AE=9E=E7=8E=B0=E4=BD=9C=E4=B8=BA=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=AE=9E=E7=8E=B0=EF=BC=8C=E6=B3=A8=E5=86=8C=E8=B5=B7?= =?UTF-8?q?=E6=9D=A5=EF=BC=8C=E4=BB=A5=E5=85=BC=E5=AE=B9=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E8=80=81=E7=89=88=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5=202.=20=E4=B9=8B=E5=89=8D=E6=B8=85?= =?UTF-8?q?=E7=90=86=E8=84=8F=E6=95=B0=E6=8D=AE=E7=9A=84=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E6=9C=89=E7=82=B9=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E4=B8=BA=EF=BC=9A=E4=B8=BALockItem=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=B8=AA=E6=88=90=E5=91=98?= =?UTF-8?q?=E5=8F=98=E9=87=8Fbirth=EF=BC=8C=E4=BB=A3=E8=A1=A8=E5=85=B6?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4=EF=BC=8C=E5=B9=B6=E4=B8=94?= =?UTF-8?q?=E4=BC=9A=E4=B8=BA=E6=AF=8F=E4=B8=AAClientID=E5=9C=A8=E5=AF=B9?= =?UTF-8?q?=E5=BA=94=E7=9A=84=E6=9C=8D=E5=8A=A1=E4=B8=AD=E5=AD=98=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E4=B8=AAkey=3DclientID=EF=BC=8Cvalue=3DLockItem?= =?UTF-8?q?=E7=9A=84=E9=94=AE=E5=80=BC=E5=AF=B9=EF=BC=8C=E5=9C=A8=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=99=BB=E5=85=A5=E6=97=B6=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E6=AF=8F=E9=9A=9430s=E6=9B=B4=E6=96=B0=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=97=B6=E9=97=B4=EF=BC=8C=E7=94=A8=E6=88=B7=E7=99=BB?= =?UTF-8?q?=E5=87=BA=E6=97=B6=E6=B8=85=E9=99=A4=EF=BC=8C=E5=B9=B6=E4=B8=94?= =?UTF-8?q?=E5=9C=A8=E8=BD=AE=E8=AF=A2=E4=BB=BB=E5=8A=A1=E4=B8=AD=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E6=A3=80=E6=9F=A5=E5=BD=93=E5=89=8D=E5=90=84=E4=B8=AA?= =?UTF-8?q?LockItem=E5=AF=B9=E5=BA=94=E7=9A=84=E6=9C=8D=E5=8A=A1=E4=B8=8B?= =?UTF-8?q?=E8=BF=99=E4=B8=AA=E9=94=AE=E5=80=BC=E5=AF=B9=E9=87=8Cvalue?= =?UTF-8?q?=E7=9A=84birth=E6=98=AF=E5=90=A6=E8=B6=85=E6=97=B6=E4=BA=86?= =?UTF-8?q?=EF=BC=8C=E5=A6=82=E6=9E=9C=E8=B6=85=E6=97=B6=EF=BC=8C=E6=B8=85?= =?UTF-8?q?=E7=90=86=E8=84=8F=E6=95=B0=E6=8D=AE=203.=20=E5=B0=86=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E4=BD=BF=E7=94=A8=E7=9A=84applyForService=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BAapplyForCleanableService=EF=BC=8C=E4=BE=BF?= =?UTF-8?q?=E4=BA=8E=E9=9B=86=E7=BE=A4=E9=87=8D=E5=90=AF=E6=97=B6=E6=B8=85?= =?UTF-8?q?=E7=90=86=E6=9C=8D=E5=8A=A1=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/server/ConnectionListAction.java | 4 +--- .../com/fr/design/actions/server/GlobalTableDataAction.java | 3 +-- .../design/data/datapane/connect/ConnectionComboBoxPanel.java | 2 +- .../com/fr/design/editlock/ConnectionLockChangeChecker.java | 2 +- .../java/com/fr/design/editlock/EditLockChangeChecker.java | 2 +- .../src/main/java/com/fr/design/editlock/EditLockUtils.java | 2 +- .../fr/design/editlock/ServerTableDataLockChangeChecker.java | 2 +- .../src/main/java/com/fr/design/gui/ibutton/UILockButton.java | 2 +- .../src/main/java/com/fr/design/gui/imenu/UILockMenuItem.java | 2 +- .../main/java/com/fr/design/os/impl/DatabaseDialogAction.java | 2 +- 10 files changed, 10 insertions(+), 13 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java b/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java index 1fd555e82..4742f337c 100644 --- a/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java @@ -8,16 +8,14 @@ import com.fr.design.dialog.BasicDialog; import com.fr.design.editlock.ConnectionLockChangeChecker; import com.fr.design.editlock.EditLockUtils; import com.fr.design.gui.NameInspector; -import com.fr.design.gui.ibutton.UILockButton; import com.fr.design.gui.imenu.UILockMenuItem; import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.menu.MenuKeySet; -import com.fr.stable.StringUtils; import com.fr.stable.os.support.OSBasedAction; import com.fr.stable.os.support.OSSupportCenter; import com.fr.design.os.impl.DatabaseDialogAction; import com.fr.file.ConnectionConfig; -import com.fr.workspace.server.lock.editlock.LockItem; +import com.fr.report.LockItem; import javax.swing.KeyStroke; import java.awt.event.ActionEvent; diff --git a/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java b/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java index d41af3205..ab85a14dc 100644 --- a/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java @@ -22,11 +22,10 @@ import com.fr.design.mainframe.DesignerFrame; import com.fr.design.menu.MenuKeySet; import com.fr.file.TableDataConfig; -import com.fr.stable.StringUtils; import com.fr.transaction.CallBackAdaptor; import com.fr.transaction.Configurations; import com.fr.transaction.WorkerFacade; -import com.fr.workspace.server.lock.editlock.LockItem; +import com.fr.report.LockItem; import javax.swing.KeyStroke; import java.awt.Dimension; diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java index a5ab12ff9..afd65f3e5 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java @@ -21,7 +21,7 @@ import com.fr.transaction.Configurations; import com.fr.transaction.WorkerFacade; import com.fr.workspace.WorkContext; import com.fr.workspace.server.connection.DBConnectAuth; -import com.fr.workspace.server.lock.editlock.LockItem; +import com.fr.report.LockItem; import javax.swing.SwingUtilities; import java.awt.Dimension; diff --git a/designer-base/src/main/java/com/fr/design/editlock/ConnectionLockChangeChecker.java b/designer-base/src/main/java/com/fr/design/editlock/ConnectionLockChangeChecker.java index ac80cd53c..8eb6a4aa9 100644 --- a/designer-base/src/main/java/com/fr/design/editlock/ConnectionLockChangeChecker.java +++ b/designer-base/src/main/java/com/fr/design/editlock/ConnectionLockChangeChecker.java @@ -1,7 +1,7 @@ package com.fr.design.editlock; -import com.fr.workspace.server.lock.editlock.LockItem; +import com.fr.report.LockItem; /** * @author Yvan diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java index 951bea334..8f276dfe8 100644 --- a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java @@ -5,7 +5,7 @@ import com.fr.design.ui.util.UIUtil; import com.fr.log.FineLoggerFactory; import com.fr.workspace.WorkContext; import com.fr.workspace.server.lock.editlock.EditLockOperator; -import com.fr.workspace.server.lock.editlock.LockItem; +import com.fr.report.LockItem; import java.util.ArrayList; import java.util.List; diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java index baa3543f8..2ab10fb92 100644 --- a/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java @@ -8,7 +8,7 @@ import com.fr.design.mainframe.DesignerContext; import com.fr.general.IOUtils; import com.fr.workspace.WorkContext; import com.fr.workspace.server.lock.editlock.EditLockOperator; -import com.fr.workspace.server.lock.editlock.LockItem; +import com.fr.report.LockItem; import org.jetbrains.annotations.Nullable; import javax.swing.Icon; diff --git a/designer-base/src/main/java/com/fr/design/editlock/ServerTableDataLockChangeChecker.java b/designer-base/src/main/java/com/fr/design/editlock/ServerTableDataLockChangeChecker.java index a3f2bbbf4..e38a4e940 100644 --- a/designer-base/src/main/java/com/fr/design/editlock/ServerTableDataLockChangeChecker.java +++ b/designer-base/src/main/java/com/fr/design/editlock/ServerTableDataLockChangeChecker.java @@ -1,6 +1,6 @@ package com.fr.design.editlock; -import com.fr.workspace.server.lock.editlock.LockItem; +import com.fr.report.LockItem; /** * @author Yvan diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java index b5534f609..77b5516f5 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java @@ -3,7 +3,7 @@ package com.fr.design.gui.ibutton; import com.fr.design.editlock.EditLockChangeEvent; import com.fr.design.editlock.EditLockChangeListener; import com.fr.design.editlock.EditLockUtils; -import com.fr.workspace.server.lock.editlock.LockItem; +import com.fr.report.LockItem; import javax.swing.Icon; diff --git a/designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItem.java b/designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItem.java index 092b76516..c609e5d5c 100644 --- a/designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItem.java +++ b/designer-base/src/main/java/com/fr/design/gui/imenu/UILockMenuItem.java @@ -2,7 +2,7 @@ package com.fr.design.gui.imenu; import com.fr.design.editlock.EditLockChangeEvent; import com.fr.design.editlock.EditLockChangeListener; -import com.fr.workspace.server.lock.editlock.LockItem; +import com.fr.report.LockItem; import javax.swing.Action; diff --git a/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java b/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java index ae0f8d1cb..057b561fa 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java @@ -11,7 +11,7 @@ import com.fr.stable.os.support.OSBasedAction; import com.fr.transaction.CallBackAdaptor; import com.fr.transaction.Configurations; import com.fr.transaction.WorkerFacade; -import com.fr.workspace.server.lock.editlock.LockItem; +import com.fr.report.LockItem; import static com.fr.design.actions.server.ConnectionListAction.doWithDatasourceManager; /** From 0527e1265ad0d54e55df97b4c8f2e5b89c9b242d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Mon, 25 Jan 2021 16:36:58 +0800 Subject: [PATCH 07/16] =?UTF-8?q?CHART-17775=20=E5=83=8F=E7=B4=A0=20&=20?= =?UTF-8?q?=E7=99=BE=E5=88=86=E6=AF=94=E6=8E=A7=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frpane/UINumberDragPaneWithPercent.java | 24 ++++ .../com/fr/design/gui/ispinner/UISpinner.java | 26 +++- .../ispinner/chart/UISpinnerWithPercent.java | 15 +++ .../gui/ispinner/chart/UISpinnerWithPx.java | 20 +++ .../gui/ispinner/chart/UISpinnerWithUnit.java | 31 +++++ .../design/gui/itextfield/UINumberField.java | 22 ++-- .../gui/itextfield/UINumberFieldWithUnit.java | 114 ++++++++++++++++++ .../SeriesCondition/LabelAlphaPane.java | 3 +- .../van/chart/box/VanChartBoxBorderPane.java | 3 +- .../bubble/component/VanChartBubblePane.java | 5 +- .../chart/column/ColumnBorderAttriPane.java | 3 +- .../column/VanChartColumnSeriesPane.java | 8 +- .../VanChartAreaSeriesFillColorPane.java | 3 +- .../component/VanChartLineTypePane.java | 5 +- .../component/VanChartTrendLinePane.java | 3 +- .../background/VanChartBackgroundPane.java | 3 +- ...rtBackgroundPaneWithOutImageAndShadow.java | 23 +++- ...BackgroundWithOutShadowWithRadiusPane.java | 3 +- .../border/VanChartBorderWithAlphaPane.java | 3 +- .../border/VanChartBorderWithRadiusPane.java | 3 +- .../border/VanChartBorderWithShapePane.java | 3 +- .../marker/VanChartCommonMarkerPane.java | 3 +- .../style/VanChartPlotLegendPane.java | 11 +- .../designer/style/VanChartTitlePane.java | 11 +- .../style/axis/VanChartBaseAxisPane.java | 10 +- .../background/VanChartAlertValuePane.java | 3 +- .../VanChartCustomIntervalBackgroundPane.java | 3 +- .../VanChartAbstractPlotSeriesPane.java | 3 +- .../VanChartDrillMapInteractivePane.java | 10 +- .../style/axis/GanttAxisStylePane.java | 3 +- .../chart/gauge/VanChartGaugeSeriesPane.java | 6 +- .../style/VanChartHeatMapSeriesPane.java | 20 +-- .../van/chart/map/VanChartMapSeriesPane.java | 3 +- .../series/VanChartMapAnchorMarkerPane.java | 3 +- .../van/chart/map/line/VanChartCurvePane.java | 6 +- .../style/VanChartMultiPieSeriesPane.java | 7 +- .../van/chart/pie/RadiusCardLayoutPane.java | 11 +- .../van/chart/pie/VanChartPieSeriesPane.java | 10 +- .../style/StructureNodeStylePane.java | 46 ++++--- .../style/VanChartStructureSeriesPane.java | 35 +++--- .../style/VanChartWordCloudSeriesPane.java | 51 ++++---- 41 files changed, 431 insertions(+), 147 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/gui/frpane/UINumberDragPaneWithPercent.java create mode 100644 designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithPercent.java create mode 100644 designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithPx.java create mode 100644 designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithUnit.java create mode 100644 designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberFieldWithUnit.java diff --git a/designer-base/src/main/java/com/fr/design/gui/frpane/UINumberDragPaneWithPercent.java b/designer-base/src/main/java/com/fr/design/gui/frpane/UINumberDragPaneWithPercent.java new file mode 100644 index 000000000..9a17962b7 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/gui/frpane/UINumberDragPaneWithPercent.java @@ -0,0 +1,24 @@ +package com.fr.design.gui.frpane; + +import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPercent; + +/** + * @author Bjorn + * @version 10.0 + * Created by Bjorn on 2021-01-21 + */ +public class UINumberDragPaneWithPercent extends UINumberDragPane { + + public UINumberDragPaneWithPercent(double minValue, double maxValue) { + super(minValue, maxValue); + } + + public UINumberDragPaneWithPercent(double minValue, double maxValue, double dierta) { + super(minValue, maxValue, dierta); + } + + protected UISpinner createUISpinner(double minValue, double maxValue, double dierta) { + return new UISpinnerWithPercent(minValue, maxValue, dierta, minValue); + } +} diff --git a/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java b/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java index c60ae2760..454b1e5b9 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java +++ b/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java @@ -13,15 +13,28 @@ import com.fr.stable.CommonUtils; import com.fr.stable.Constants; import com.fr.stable.StringUtils; -import com.fr.stable.collections.utils.MathUtils; -import javax.swing.*; +import javax.swing.ButtonModel; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.plaf.ButtonUI; -import java.awt.*; -import java.awt.event.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver { @@ -46,6 +59,9 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver */ private int numberFieldColumns; + public UISpinner() { + + } public UISpinner(double minValue, double maxValue, double dierta) { init(minValue, maxValue, dierta); @@ -56,7 +72,7 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver textField.setValue(defaultValue); } - private void init(double minValue, double maxValue, double dierta) { + protected void init(double minValue, double maxValue, double dierta) { this.minValue = minValue; this.maxValue = maxValue; this.dierta = dierta; diff --git a/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithPercent.java b/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithPercent.java new file mode 100644 index 000000000..5fdc0c3f6 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithPercent.java @@ -0,0 +1,15 @@ +package com.fr.design.gui.ispinner.chart; + +/** + * @author Bjorn + * @version 10.0 + * Created by Bjorn on 2021-01-21 + */ +public class UISpinnerWithPercent extends UISpinnerWithUnit { + + private static final String UNIT = "%"; + + public UISpinnerWithPercent(double minValue, double maxValue, double dierta, double defaultValue) { + super(minValue, maxValue, dierta, defaultValue, UNIT); + } +} diff --git a/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithPx.java b/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithPx.java new file mode 100644 index 000000000..44397cbc5 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithPx.java @@ -0,0 +1,20 @@ +package com.fr.design.gui.ispinner.chart; + +/** + * @author Bjorn + * @version 10.0 + * Created by Bjorn on 2021-01-21 + */ +public class UISpinnerWithPx extends UISpinnerWithUnit { + + private static final String UNIT = "px"; + + public UISpinnerWithPx(double defaultValue) { + this(0, Double.MAX_VALUE, 1, defaultValue); + } + + public UISpinnerWithPx(double minValue, double maxValue, double dierta, double defaultValue) { + super(minValue, maxValue, dierta, defaultValue, UNIT); + this.getTextField().canFillNegativeNumber(false); + } +} diff --git a/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithUnit.java b/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithUnit.java new file mode 100644 index 000000000..d8d8ab849 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithUnit.java @@ -0,0 +1,31 @@ +package com.fr.design.gui.ispinner.chart; + +import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.itextfield.UINumberField; +import com.fr.design.gui.itextfield.UINumberFieldWithUnit; + +/** + * @author Bjorn + * @version 10.0 + * Created by Bjorn on 2021-01-20 + */ +public class UISpinnerWithUnit extends UISpinner { + + private String unit; + + public UISpinnerWithUnit(double minValue, double maxValue, double dierta, double defaultValue, String unit) { + this.unit = unit; + init(minValue, maxValue, dierta); + getTextField().setValue(defaultValue); + } + + @Override + protected UINumberField initNumberField() { + return new UINumberFieldWithUnit(3, unit); + } + + @Override + public UINumberFieldWithUnit getTextField() { + return (UINumberFieldWithUnit) super.getTextField(); + } +} diff --git a/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberField.java b/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberField.java index 12b894ddc..f4437a9c4 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberField.java +++ b/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberField.java @@ -1,16 +1,15 @@ package com.fr.design.gui.itextfield; import com.fr.base.Utils; -import com.fr.design.gui.ilable.UILabel; import com.fr.general.ComparatorUtils; import com.fr.stable.CoreConstants; import com.fr.stable.StringUtils; -import javax.swing.*; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; -import java.awt.*; +import java.awt.Dimension; +import java.awt.Toolkit; /** * Number Field. @@ -193,7 +192,6 @@ public class UINumberField extends UITextField { if (!fillNegativeNumber && strNew.contains("-")) { return true; } - boolean noChange = false; boolean isMinus = strNew.startsWith("-"); strNew = strNew.replaceFirst("-", StringUtils.EMPTY); // 控制能输入负数 String strIntPart; @@ -207,25 +205,27 @@ public class UINumberField extends UITextField { } if (isOverMaxOrMinValue(strIntPart, strDecPart, strNew)) { Toolkit.getDefaultToolkit().beep(); - noChange = true; + return true; } + return checkNumber(strNew, isMinus); + } + protected boolean checkNumber(String strValue, boolean isMinus) { try { - if (!ComparatorUtils.equals(strNew, StringUtils.EMPTY) && !ComparatorUtils.equals(strNew, "-")) {// 控制能输入负数 - double d = Double.parseDouble(strNew) * (isMinus ? -1 : 1); + if (!ComparatorUtils.equals(strValue, StringUtils.EMPTY) && !ComparatorUtils.equals(strValue, "-")) {// 控制能输入负数 + double d = Double.parseDouble(strValue) * (isMinus ? -1 : 1); if (d < minValue || d > maxValue) { throw new Exception(); } } } catch (Exception e) { Toolkit.getDefaultToolkit().beep(); - noChange = true; + return true; } - - return noChange; + return false; } - private boolean isOverMaxOrMinValue(String strIntPart, String strDecPart, String strNew) { + protected boolean isOverMaxOrMinValue(String strIntPart, String strDecPart, String strNew) { boolean checkLength = strIntPart.length() > maxIntegerLength || strDecPart.length() > maxDecimalLength; return checkLength || (strNew.length() > 1 && ComparatorUtils.equals(strNew.substring(0, 1), "0") && !ComparatorUtils.equals(strNew.substring(1, 2), ".")); diff --git a/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberFieldWithUnit.java b/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberFieldWithUnit.java new file mode 100644 index 000000000..e9f412551 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberFieldWithUnit.java @@ -0,0 +1,114 @@ +package com.fr.design.gui.itextfield; + +import com.fr.base.Utils; +import com.fr.general.ComparatorUtils; +import com.fr.stable.StringUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.awt.Toolkit; + +/** + * @author Bjorn + * @version 10.0 + * Created by Bjorn on 2021-01-20 + * 这个控件不会限制输入的数字大小,但是同样不允许输入数字之外的字符 + */ +public class UINumberFieldWithUnit extends UINumberField { + + private String unit; + + private List unitList = new ArrayList<>(); + + public UINumberFieldWithUnit(int columns, String unit) { + super(columns); + this.unit = unit; + initUnitList(); + } + + //对单位的字符进行组合 + private void initUnitList() { + char[] chars = unit.toCharArray(); + Set set = new LinkedHashSet<>(); + initUnitList(chars, 0, StringUtils.EMPTY, set); + unitList.addAll(set); + Collections.sort(unitList, Comparator.comparing(String::length)); + } + + private void initUnitList(char[] chars, int index, String str, Set set) { + if (index == chars.length) { + return; + } + for (int i = index; i < chars.length; i++) { + String newStr = str + chars[i]; + set.add(newStr); + initUnitList(chars, i + 1, newStr, set); + } + } + + public void setFieldDocument() { + setDocument(new NumberDocumentNoLimit()); + } + + public void setValue(double value) { + this.setText(Utils.doubleToString(value) + unit); + } + + public double getValue() throws NumberFormatException { + try { + String text = this.getText(); + if (StringUtils.isEmpty(text)) { + return 0; + } + + return Double.parseDouble(text.replace(getEndString(text), StringUtils.EMPTY)); + } catch (NumberFormatException numberFormatException) { + return UINumberField.ERROR_VALUE; + } + } + + private String getEndString(String text) { + int size = unitList.size(); + for (int i = size - 1; i >= 0; i--) { + String unit = unitList.get(i); + if (text.endsWith(unit)) { + return unit; + + } + } + return StringUtils.EMPTY; + } + + class NumberDocumentNoLimit extends NumberDocument { + + public boolean checkString(int offset, String s, String str) { + return (ComparatorUtils.equals(s, "F") + || ComparatorUtils.equals(s, "f") + || ComparatorUtils.equals(s, "D") + || ComparatorUtils.equals(s, "d") + || (ComparatorUtils.equals(s, ".") && getMaxDecimalLength() == 0)); + + } + + protected boolean isOverMaxOrMinValue(String strIntPart, String strDecPart, String strNew) { + return super.isOverMaxOrMinValue(strIntPart, strDecPart, strNew.replaceFirst(getEndString(strNew), StringUtils.EMPTY)); + } + + protected boolean checkNumber(String strValue, boolean isMinus) { + try { + if (ComparatorUtils.equals(strValue, StringUtils.EMPTY) || ComparatorUtils.equals(strValue, "-")) { + return false; + } + Double.parseDouble(strValue.replaceFirst(getEndString(strValue), StringUtils.EMPTY)); + } catch (Exception e) { + Toolkit.getDefaultToolkit().beep(); + return true; + } + return false; + } + } +} diff --git a/designer-chart/src/main/java/com/fr/design/chart/series/SeriesCondition/LabelAlphaPane.java b/designer-chart/src/main/java/com/fr/design/chart/series/SeriesCondition/LabelAlphaPane.java index 1962ab4a9..5c9176504 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/series/SeriesCondition/LabelAlphaPane.java +++ b/designer-chart/src/main/java/com/fr/design/chart/series/SeriesCondition/LabelAlphaPane.java @@ -5,6 +5,7 @@ import com.fr.chart.base.DataSeriesCondition; import com.fr.design.condition.ConditionAttrSingleConditionPane; import com.fr.design.condition.ConditionAttributesPane; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ilable.UILabel; @@ -32,7 +33,7 @@ public class LabelAlphaPane extends ConditionAttrSingleConditionPane { }; } }; - lineWidth = new UISpinner(0.5, Double.MAX_VALUE, 0.5, 0.5); + lineWidth = new UISpinnerWithPx(0.5, Double.MAX_VALUE, 0.5, 0.5); Component[][] components = new Component[][]{ new Component[]{null, null}, diff --git a/designer-chart/src/main/java/com/fr/van/chart/bubble/component/VanChartBubblePane.java b/designer-chart/src/main/java/com/fr/van/chart/bubble/component/VanChartBubblePane.java index a51f91047..2d95bf272 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/bubble/component/VanChartBubblePane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/bubble/component/VanChartBubblePane.java @@ -4,6 +4,7 @@ import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -24,8 +25,8 @@ public class VanChartBubblePane extends BasicBeanPane { private UIButtonGroup displayNegative; public VanChartBubblePane(){ - minDiameter = new UISpinner(0,Double.MAX_VALUE,1,0); - maxDiameter = new UISpinner(0,Double.MAX_VALUE,1,0); + minDiameter = new UISpinnerWithPx(0); + maxDiameter = new UISpinnerWithPx(0); shadow = new UIButtonGroup(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Open"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Close")}); displayNegative = new UIButtonGroup(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Open"), diff --git a/designer-chart/src/main/java/com/fr/van/chart/column/ColumnBorderAttriPane.java b/designer-chart/src/main/java/com/fr/van/chart/column/ColumnBorderAttriPane.java index c81317a81..af4be834a 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/column/ColumnBorderAttriPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/column/ColumnBorderAttriPane.java @@ -3,6 +3,7 @@ package com.fr.van.chart.column; import com.fr.design.chart.comp.BorderAttriPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import java.awt.Dimension; @@ -19,7 +20,7 @@ public class ColumnBorderAttriPane extends BorderAttriPane { public ColumnBorderAttriPane(String radiusString) { this.add(new UILabel(radiusString + ":")); - radius = new UISpinner(0,1000,1,0); + radius = new UISpinnerWithPx(0,1000,1,0); this.add(radius); radius.setPreferredSize(new Dimension(60, 18)); } diff --git a/designer-chart/src/main/java/com/fr/van/chart/column/VanChartColumnSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/column/VanChartColumnSeriesPane.java index eb2c3914a..b83a20f61 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/column/VanChartColumnSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/column/VanChartColumnSeriesPane.java @@ -3,6 +3,8 @@ package com.fr.van.chart.column; import com.fr.base.background.ImageBackground; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.ConditionAttr; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.i18n.Toolkit; import com.fr.design.gui.frpane.UINumberDragPane; import com.fr.design.gui.ibutton.UIButtonGroup; @@ -76,10 +78,10 @@ public class VanChartColumnSeriesPane extends VanChartAbstractPlotSeriesPane { private JPanel createSeriesStylePane(double[] row, double[] col) { isFixedWidth = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_YES"), Toolkit.i18nText("Fine-Design_Chart_NO")}); - columnWidth = new UISpinner(0,1000,1,0); + columnWidth = new UISpinnerWithPx(0,1000,1,0); columnWidth.setBorder(BorderFactory.createEmptyBorder(0, (int)TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH + TableLayout4VanChartHelper.COMPONENT_INTERVAL,0,0)); - seriesGap = new UINumberDragPane(-100, 100); - categoryGap = new UINumberDragPane(0, 100); + seriesGap = new UINumberDragPaneWithPercent(-100, 100); + categoryGap = new UINumberDragPaneWithPercent(0, 100); isFillWithImage = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_YES"), Toolkit.i18nText("Fine-Design_Chart_NO")}); imagePane = new ImageBackgroundQuickPane(false); imagePane.setBorder(BorderFactory.createEmptyBorder(0,(int)TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH + TableLayout4VanChartHelper.COMPONENT_INTERVAL,0,0)); diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartAreaSeriesFillColorPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartAreaSeriesFillColorPane.java index 24400cacd..241798bef 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartAreaSeriesFillColorPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartAreaSeriesFillColorPane.java @@ -2,6 +2,7 @@ package com.fr.van.chart.designer.component; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; @@ -36,7 +37,7 @@ public class VanChartAreaSeriesFillColorPane extends BasicPane { }; } }; - transparent = new UINumberDragPane(0, 100); + transparent = new UINumberDragPaneWithPercent(0, 100); JPanel transparentPane = TableLayout4VanChartHelper.createGapTableLayoutPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Alpha"), transparent); diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartLineTypePane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartLineTypePane.java index 10c3308b3..b6119aa64 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartLineTypePane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartLineTypePane.java @@ -4,6 +4,7 @@ import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.utils.gui.UIComponentUtils; @@ -15,11 +16,11 @@ import com.fr.plugin.chart.type.LineType; import com.fr.van.chart.designer.TableLayout4VanChartHelper; import javax.swing.JPanel; +import java.util.Arrays; import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.Arrays; /** * line相关设置 @@ -74,7 +75,7 @@ public class VanChartLineTypePane extends BasicPane { lineTypeComboBox = createLineType(); - lineWidthSpinner = new UISpinner(LINE_WIDTH_MIN_VALUE, Integer.MAX_VALUE, LINE_WIDTH_DIERTA_VALUE, LINE_WIDTH_DEFAULT_VALUE); + lineWidthSpinner = new UISpinnerWithPx(LINE_WIDTH_MIN_VALUE, Integer.MAX_VALUE, LINE_WIDTH_DIERTA_VALUE, LINE_WIDTH_DEFAULT_VALUE); lineTypeComboBox.addActionListener(new ActionListener() { @Override diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTrendLinePane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTrendLinePane.java index eb8bd0f16..dbcdb0e21 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTrendLinePane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTrendLinePane.java @@ -7,6 +7,7 @@ import com.fr.design.dialog.BasicPane; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; @@ -61,7 +62,7 @@ public class VanChartTrendLinePane extends BasicPane{ trendLineName = new UITextField(); trendLineColor = new ColorSelectBox(PREFERRED_WIDTH); trendLineStyle = new LineTypeComboBox(new LineType[]{LineType.NONE, LineType.SOLID, LineType.DASHED}); - lineWidthSpinner = new UISpinner(LINE_WIDTH_MIN_VALUE, Integer.MAX_VALUE, LINE_WIDTH_DIERTA_VALUE, LINE_WIDTH_DEFAULT_VALUE); + lineWidthSpinner = new UISpinnerWithPx(LINE_WIDTH_MIN_VALUE, Integer.MAX_VALUE, LINE_WIDTH_DIERTA_VALUE, LINE_WIDTH_DEFAULT_VALUE); trendLineType = new UIComboBox(TYPES); prePeriod = new UISpinner(0, Integer.MAX_VALUE, 1, 0); afterPeriod = new UISpinner(0, Integer.MAX_VALUE, 1, 0); diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundPane.java index 9a81b6ece..c51ac0fe9 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundPane.java @@ -4,6 +4,7 @@ import com.fr.base.background.ImageBackground; import com.fr.chart.chartglyph.GeneralInfo; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; @@ -112,7 +113,7 @@ public class VanChartBackgroundPane extends BasicPane { } }); transparentLabel = new UILabel(Toolkit.i18nText("Fine-Design_Report_Alpha")); - transparent = new UINumberDragPane(0, 100); + transparent = new UINumberDragPaneWithPercent(0, 100); } protected Component[][] getPaneComponents() { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundPaneWithOutImageAndShadow.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundPaneWithOutImageAndShadow.java index 812dd5a09..d854f9917 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundPaneWithOutImageAndShadow.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundPaneWithOutImageAndShadow.java @@ -1,10 +1,15 @@ package com.fr.van.chart.designer.component.background; +import com.fr.design.constants.LayoutConstants; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane; +import com.fr.van.chart.designer.TableLayout4VanChartHelper; +import javax.swing.BorderFactory; import javax.swing.JPanel; import java.awt.Component; @@ -28,10 +33,13 @@ public class VanChartBackgroundPaneWithOutImageAndShadow extends VanChartBackgro double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize = {p, f}; - double[] rowSize = { p,p,p}; + double[] columnSize = {f, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH}; + double[] rowSize = {p, p, p}; - return TableLayoutHelper.createTableLayoutPane(getPaneComponents(),rowSize,columnSize); + JPanel tableLayoutPane = TableLayoutHelper.createGapTableLayoutPane(getPaneComponents(), rowSize, columnSize, + TableLayout4VanChartHelper.COMPONENT_INTERVAL, LayoutConstants.VGAP_MEDIUM); + tableLayoutPane.setBorder(BorderFactory.createEmptyBorder(0, 12, 4, 0)); + return tableLayoutPane; } @Override @@ -44,7 +52,7 @@ public class VanChartBackgroundPaneWithOutImageAndShadow extends VanChartBackgro */ @Override public String title4PopupWindow() { - return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Default_Name"); + return Toolkit.i18nText("Fine-Design_Chart_Default_Name"); } }); paneList.add(new ColorBackgroundQuickPane()); @@ -54,11 +62,14 @@ public class VanChartBackgroundPaneWithOutImageAndShadow extends VanChartBackgro @Override protected Component[][] getPaneComponents() { return new Component[][]{ - new Component[]{typeComboBox, null}, - new Component[]{centerPane, null}, + new Component[]{new UILabel(labelName()), typeComboBox}, + new Component[]{null, centerPane}, new Component[]{getTransparentLabel(), transparent}, }; } + protected String labelName() { + return Toolkit.i18nText("Fine-Design_Chart_Background"); + } } diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundWithOutShadowWithRadiusPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundWithOutShadowWithRadiusPane.java index 807ee6216..e0e834598 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundWithOutShadowWithRadiusPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/background/VanChartBackgroundWithOutShadowWithRadiusPane.java @@ -3,6 +3,7 @@ package com.fr.van.chart.designer.component.background; import com.fr.chart.chartglyph.GeneralInfo; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.i18n.Toolkit; import java.awt.Component; @@ -24,7 +25,7 @@ public class VanChartBackgroundWithOutShadowWithRadiusPane extends VanChartBackg } protected Component[][] getPaneComponents() { - radius = new UISpinner(0, 1000, 1, 0); + radius = new UISpinnerWithPx(0, 1000, 1, 0); return new Component[][]{ new Component[]{null, null}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Report_Fill")), typeComboBox}, diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithAlphaPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithAlphaPane.java index 724cefe92..607bc0da5 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithAlphaPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithAlphaPane.java @@ -1,6 +1,7 @@ package com.fr.van.chart.designer.component.border; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ilable.UILabel; import com.fr.design.utils.gui.UIComponentUtils; import com.fr.design.widget.FRWidgetFactory; @@ -29,7 +30,7 @@ public class VanChartBorderWithAlphaPane extends VanChartBorderPane{ @Override protected void initComponents() { super.initComponents(); - transparent = new UINumberDragPane(0,100); + transparent = new UINumberDragPaneWithPercent(0,100); } protected void initContent() { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithRadiusPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithRadiusPane.java index d6fdf9c69..d92f3c0ee 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithRadiusPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithRadiusPane.java @@ -4,6 +4,7 @@ import com.fr.chart.base.AttrBorder; import com.fr.chart.chartglyph.GeneralInfo; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.i18n.Toolkit; import com.fr.design.utils.gui.UIComponentUtils; import com.fr.design.widget.FRWidgetFactory; @@ -34,7 +35,7 @@ public class VanChartBorderWithRadiusPane extends VanChartBorderPane { @Override protected void initComponents() { super.initComponents(); - radius = new UISpinner(0,1000,1,0); + radius = new UISpinnerWithPx(0,1000,1,0); } @Override diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithShapePane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithShapePane.java index f40a51f12..292ae55ac 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithShapePane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithShapePane.java @@ -7,6 +7,7 @@ import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.gui.xcombox.MarkerComboBox; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; @@ -58,7 +59,7 @@ public class VanChartBorderWithShapePane extends BasicPane { }); lineColorBox = new ColorSelectBox(100); borderShape = new MarkerComboBox(MarkerFactory.getLabelShapeMarkers()); - borderRadius = new UISpinner(0, 1000, 1, 0); + borderRadius = new UISpinnerWithPx(0, 1000, 1, 0); } private void createBorderPane() { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/marker/VanChartCommonMarkerPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/marker/VanChartCommonMarkerPane.java index 444bebfaa..e2cdf0cb0 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/marker/VanChartCommonMarkerPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/marker/VanChartCommonMarkerPane.java @@ -4,6 +4,7 @@ import com.fr.chart.chartglyph.Marker; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.gui.xcombox.MarkerComboBox; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; @@ -89,7 +90,7 @@ public class VanChartCommonMarkerPane extends BasicBeanPane }; } }; - radius = new UISpinner(0, 100, 0.5, 0); + radius = new UISpinnerWithPx(0, 100, 0.5, 0); double p = TableLayout.PREFERRED; diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartPlotLegendPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartPlotLegendPane.java index 8a0a62f62..5a16aa4c8 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartPlotLegendPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartPlotLegendPane.java @@ -4,11 +4,12 @@ import com.fr.base.BaseUtils; import com.fr.chart.chartattr.Plot; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.frpane.UIBubbleFloatPane; +import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -65,7 +66,7 @@ public class VanChartPlotLegendPane extends BasicPane { //区域显示策略 恢复用注释。下面4行删除。 private UIButtonGroup customSize; - private UISpinner maxProportion; + private UINumberDragPane maxProportion; private JPanel maxProportionPane; //区域显示策略 恢复用注释。取消注释。 //private LimitPane limitPane; @@ -294,7 +295,7 @@ public class VanChartPlotLegendPane extends BasicPane { private JPanel createDisplayStrategy() { //区域显示策略 恢复用注释。开始删除。 - maxProportion = new UISpinner(0, 100, 1, 30); + maxProportion = new UINumberDragPaneWithPercent(0, 100, 1); customSize = new UIButtonGroup<>(new String[]{Toolkit.i18nText("Fine-Design_Chart_Auto"), Toolkit.i18nText("Fine-Design_Chart_Custom")}); JPanel limitSizePane = TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Area_Size"), customSize); @@ -402,7 +403,7 @@ public class VanChartPlotLegendPane extends BasicPane { legend.setLayout(layoutButton.getSelectedItem()); //区域显示策略 恢复用注释。下面2行删除。 legend.setCustomSize(customSize.getSelectedIndex() == 1); - legend.setMaxHeight(maxProportion.getValue()); + legend.setMaxHeight(maxProportion.updateBean()); //区域显示策略 恢复用注释。取消注释。 //legend.setLimitAttribute(limitPane.updateBean()); legend.setFloatPercentX(customFloatPositionPane.getFloatPosition_x()); @@ -427,7 +428,7 @@ public class VanChartPlotLegendPane extends BasicPane { layoutButton.setSelectedItem(legend.getLayout()); //区域显示策略 恢复用注释。下面2行删除。 customSize.setSelectedIndex(legend.isCustomSize() ? 1 : 0); - maxProportion.setValue(legend.getMaxHeight()); + maxProportion.populateBean(legend.getMaxHeight()); //区域显示策略 恢复用注释。取消注释。 //limitPane.populateBean(legend.getLimitAttribute()); if (highlightButton != null) { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartTitlePane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartTitlePane.java index 1c02f342c..59652a4af 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartTitlePane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartTitlePane.java @@ -7,11 +7,12 @@ import com.fr.chart.base.TextAttr; import com.fr.chartx.config.info.constant.ConfigType; import com.fr.design.formula.TinyFormulaPane; import com.fr.design.gui.frpane.UIBubbleFloatPane; +import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.PaneTitleConstants; @@ -64,7 +65,7 @@ public class VanChartTitlePane extends AbstractVanChartScrollPane { //区域显示策略 恢复用注释。下面3行删除。 private UIButtonGroup limitSize; - private UISpinner maxProportion; + private UINumberDragPane maxProportion; private JPanel maxProportionPane; //区域显示策略 恢复用注释。取消注释。 //private LimitPane limitPane; @@ -183,7 +184,7 @@ public class VanChartTitlePane extends AbstractVanChartScrollPane { private JPanel createDisplayStrategy() { //区域显示策略 恢复用注释。开始删除。 - maxProportion = new UISpinner(0, 100, 1, 30); + maxProportion = new UINumberDragPaneWithPercent(0, 100, 1); limitSize = new UIButtonGroup(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Limit"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Not_Limit")}); JPanel limitSizePane = TableLayout4VanChartHelper.createGapTableLayoutPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Area_Size"), limitSize); @@ -320,7 +321,7 @@ public class VanChartTitlePane extends AbstractVanChartScrollPane { customFloatPositionPane.setFloatPosition_y(title.getFloatPercentY()); //区域显示策略 恢复用注释。下面2行删除。 limitSize.setSelectedIndex(title.isLimitSize() ? 0 : 1); - maxProportion.setValue(title.getMaxHeight()); + maxProportion.populateBean(title.getMaxHeight()); //区域显示策略 恢复用注释。取消注释。 //limitPane.populateBean(title.getLimitAttribute()); @@ -357,7 +358,7 @@ public class VanChartTitlePane extends AbstractVanChartScrollPane { title.setFloating(customFloatPositionButton.isSelected()); //区域显示策略 恢复用注释。下面2行删除。 title.setLimitSize(limitSize.getSelectedIndex() == 0); - title.setMaxHeight(maxProportion.getValue()); + title.setMaxHeight(maxProportion.updateBean()); //区域显示策略 恢复用注释。取消注释。 //title.setLimitAttribute(limitPane.updateBean()); title.setFloatPercentX(customFloatPositionPane.getFloatPosition_x()); diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java index 955be0a8c..9fb0c7e31 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java @@ -8,11 +8,11 @@ import com.fr.chart.chartattr.Title; import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.formula.TinyFormulaPane; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.style.FormatPane; import com.fr.design.i18n.Toolkit; @@ -97,7 +97,7 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { //区域显示策略 恢复用注释。下面3行删除。 protected UIButtonGroup axisLimitSize; - protected UISpinner maxProportion; + protected UINumberDragPane maxProportion; protected JPanel maxProportionPane; //区域显示策略 恢复用注释。取消注释。 //private LimitPane limitPane; @@ -465,7 +465,7 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { protected JPanel createDisplayStrategy() { //区域显示策略 恢复用注释。删除到return,即除了注释的代码都删除。 - maxProportion = new UISpinner(0, 100, 1, 30); + maxProportion = new UINumberDragPaneWithPercent(0, 100, 1); axisLimitSize = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Limit"), Toolkit.i18nText("Fine-Design_Chart_Not_Limit")}); JPanel limitSizePane = TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Area_Size"), axisLimitSize); @@ -767,7 +767,7 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { axisLimitSize.setSelectedIndex(axis.isLimitSize() ? 0 : 1); } if (maxProportion != null) { - maxProportion.setValue(axis.getMaxHeight()); + maxProportion.populateBean(axis.getMaxHeight()); } //区域显示策略 恢复用注释。取消注释。 @@ -909,7 +909,7 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { axis.setLimitSize(axisLimitSize.getSelectedIndex() == 0); } if (maxProportion != null) { - axis.setMaxHeight(maxProportion.getValue()); + axis.setMaxHeight(maxProportion.updateBean()); } //区域显示策略 恢复用注释。取消注释。 // if (limitPane != null) { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/background/VanChartAlertValuePane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/background/VanChartAlertValuePane.java index ca59824f6..387d974d2 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/background/VanChartAlertValuePane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/background/VanChartAlertValuePane.java @@ -10,6 +10,7 @@ import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.i18n.Toolkit; import com.fr.design.gui.style.FRFontPane; import com.fr.design.layout.FRGUIPaneFactory; @@ -90,7 +91,7 @@ public class VanChartAlertValuePane extends BasicBeanPane { alertValue.setPreferredSize(new Dimension(VALUE_WD, HT)); alertLineStyle = new LineTypeComboBox(new LineType[]{LineType.SOLID, LineType.DASHED}); - lineWidthSpinner = new UISpinner(LINE_WIDTH_MIN_VALUE, Integer.MAX_VALUE, LINE_WIDTH_DIERTA_VALUE, LINE_WIDTH_DEFAULT_VALUE); + lineWidthSpinner = new UISpinnerWithPx(LINE_WIDTH_MIN_VALUE, Integer.MAX_VALUE, LINE_WIDTH_DIERTA_VALUE, LINE_WIDTH_DEFAULT_VALUE); alertLineColor = new ColorSelectBox(PREFERRED_WIDTH); alertTextPosition = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Axis_Top"), Toolkit.i18nText("Fine-Design_Chart_Axis_Bottom")}); alertText = new TinyFormulaPane(); diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/background/VanChartCustomIntervalBackgroundPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/background/VanChartCustomIntervalBackgroundPane.java index 81aa8d276..ef6dc0e11 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/background/VanChartCustomIntervalBackgroundPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/background/VanChartCustomIntervalBackgroundPane.java @@ -5,6 +5,7 @@ import com.fr.base.Utils; import com.fr.design.beans.BasicBeanPane; import com.fr.design.formula.TinyFormulaPane; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; @@ -52,7 +53,7 @@ public class VanChartCustomIntervalBackgroundPane extends BasicBeanPane { protected void initComponents() { textAttrPane = new ChartTextAttrPane(); colorSelectBox4button = new ColorSelectBoxWithOutTransparent(100); - transparent = new UINumberDragPane(0, 100); + transparent = new UINumberDragPaneWithPercent(0, 100); } protected Component[][] getUsedComponents() { diff --git a/designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeSeriesPane.java index 8a48837cb..aab8f3cf2 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeSeriesPane.java @@ -3,9 +3,11 @@ package com.fr.van.chart.gauge; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -257,12 +259,12 @@ public class VanChartGaugeSeriesPane extends VanChartAbstractPlotSeriesPane { } private Component[] getThermometerWidth() { - thermometerWidth = new UISpinner(0, Double.MAX_VALUE, 0.1, 10); + thermometerWidth = new UISpinnerWithPx(0, Double.MAX_VALUE, 0.1, 10); return new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Thermometer_Width")),thermometerWidth}; } private Component[] getChutePercent() { - chutePercent = new UINumberDragPane(0, 100, 1); + chutePercent = new UINumberDragPaneWithPercent(0, 100, 1); return new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Chute_Percent")),chutePercent}; } diff --git a/designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/style/VanChartHeatMapSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/style/VanChartHeatMapSeriesPane.java index 1e06db777..0dd9cea31 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/style/VanChartHeatMapSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/style/VanChartHeatMapSeriesPane.java @@ -3,9 +3,11 @@ package com.fr.van.chart.heatmap.designer.style; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -31,7 +33,7 @@ import java.awt.Component; public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane { private UISpinner radius; - private UISpinner blur; + private UINumberDragPane blur; private UINumberDragPane minOpacity; private UINumberDragPane maxOpacity; @@ -119,8 +121,8 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane { } private JPanel createHeatPointStylePane() { - radius = new UISpinner(0, Double.MAX_VALUE, 1, 30); - blur = new UISpinner(0, 100, 1, 30); + radius = new UISpinnerWithPx(0, Double.MAX_VALUE, 1, 30); + blur = new UINumberDragPaneWithPercent(0, 100, 1); double p = TableLayout.PREFERRED; double f = TableLayout.FILL; @@ -130,8 +132,8 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane { Component[][] components = new Component[][]{ new Component[]{null, null, null}, - new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Heat_Map_Radius")), radius, null}, - new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Heat_Map_Blur")), blur, new UILabel("%")} + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Heat_Map_Radius")), radius, null}, + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Heat_Map_Blur")), blur, null} }; JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, col); @@ -141,8 +143,8 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane { } private JPanel createOpacityPane() { - maxOpacity = new UINumberDragPane(0, 100); - minOpacity = new UINumberDragPane(0, 100); + maxOpacity = new UINumberDragPaneWithPercent(0, 100); + minOpacity = new UINumberDragPaneWithPercent(0, 100); double p = TableLayout.PREFERRED; double f = TableLayout.FILL; @@ -169,7 +171,7 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane { if (plot instanceof VanChartHeatMapPlot) { VanChartHeatMapPlot heatMapPlot = (VanChartHeatMapPlot) plot; radius.setValue(heatMapPlot.getRadius()); - blur.setValue(heatMapPlot.getBlur()); + blur.populateBean(heatMapPlot.getBlur()); maxOpacity.populateBean(heatMapPlot.getMaxOpacity()); minOpacity.populateBean(heatMapPlot.getMinOpacity()); getVanChartValueColorPane().populateBean((VanChartRangeLegend) plot.getLegend()); @@ -187,7 +189,7 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane { if (plot instanceof VanChartHeatMapPlot) { VanChartHeatMapPlot heatMapPlot = (VanChartHeatMapPlot) plot; heatMapPlot.setRadius(radius.getValue()); - heatMapPlot.setBlur(blur.getValue()); + heatMapPlot.setBlur(blur.updateBean()); heatMapPlot.setMaxOpacity(maxOpacity.updateBean()); heatMapPlot.setMinOpacity(minOpacity.updateBean()); getVanChartValueColorPane().updateBean((VanChartRangeLegend) plot.getLegend()); diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/VanChartMapSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/map/VanChartMapSeriesPane.java index 8f5a3d178..2d1cb2304 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/map/VanChartMapSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/map/VanChartMapSeriesPane.java @@ -5,6 +5,7 @@ import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.design.constants.LayoutConstants; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; @@ -321,7 +322,7 @@ public class VanChartMapSeriesPane extends VanChartColorValueSeriesPane { //不透明度 protected JPanel createAlphaPane() { - setTransparent(new UINumberDragPane(0, 100)); + setTransparent(new UINumberDragPaneWithPercent(0, 100)); double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = {f, TableLayout4VanChartHelper.EDIT_AREA_WIDTH}; diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/series/VanChartMapAnchorMarkerPane.java b/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/series/VanChartMapAnchorMarkerPane.java index c7ddda38b..d34a89b5d 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/series/VanChartMapAnchorMarkerPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/series/VanChartMapAnchorMarkerPane.java @@ -3,6 +3,7 @@ package com.fr.van.chart.map.designer.style.series; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -20,7 +21,7 @@ public class VanChartMapAnchorMarkerPane extends BasicBeanPane{ } private void initComponents(){ - lineWidth = new UISpinner(0, MAX_WIDTH, STEP, 0.5); + lineWidth = new UISpinnerWithPx(0, MAX_WIDTH, STEP, 0.5); bending = new UINumberDragPane(0, 100); - lineAlphaPane = new UINumberDragPane(0, 100); + lineAlphaPane = new UINumberDragPaneWithPercent(0, 100); double p = TableLayout.PREFERRED; double f = TableLayout.FILL; diff --git a/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieSeriesPane.java index 4fa61802d..6c1575cfd 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieSeriesPane.java @@ -1,6 +1,7 @@ package com.fr.van.chart.multilayer.style; import com.fr.chart.chartattr.Plot; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; @@ -46,7 +47,7 @@ public class VanChartMultiPieSeriesPane extends VanChartPieSeriesPane { com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Gradual_Deep")}); startAngle = new UISpinner(MIN_ANGLE, MAX_ANGLE, 1, 0); endAngle = new UISpinner(MIN_ANGLE, MAX_ANGLE, 1, 0); - innerRadius = new UISpinner(0, 100, 1, 0); + innerRadius = new UINumberDragPaneWithPercent(0, 100, 1); supportRotation = new UIButtonGroup(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Open"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Close")}); supportDrill = new UIButtonGroup(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Open"), @@ -72,7 +73,7 @@ public class VanChartMultiPieSeriesPane extends VanChartPieSeriesPane { gradualLevel.setSelectedIndex(multiPiePlot.isLight() ? 0 : 1); startAngle.setValue(multiPiePlot.getStartAngle()); endAngle.setValue(multiPiePlot.getEndAngle()); - innerRadius.setValue(multiPiePlot.getInnerRadiusPercent()); + innerRadius.populateBean(multiPiePlot.getInnerRadiusPercent()); supportDrill.setSelectedIndex(multiPiePlot.isSupportDrill() ? 0 : 1); supportRotation.setSelectedIndex(multiPiePlot.isSupportRotation() ? 0 : 1); } @@ -85,7 +86,7 @@ public class VanChartMultiPieSeriesPane extends VanChartPieSeriesPane { multiPiePlot.setLight(gradualLevel.getSelectedIndex() == 0); multiPiePlot.setStartAngle(startAngle.getValue()); multiPiePlot.setEndAngle(endAngle.getValue()); - multiPiePlot.setInnerRadiusPercent(innerRadius.getValue()); + multiPiePlot.setInnerRadiusPercent(innerRadius.updateBean()); multiPiePlot.setSupportDrill(supportDrill.getSelectedIndex() == 0); multiPiePlot.setSupportRotation(supportRotation.getSelectedIndex() == 0); } diff --git a/designer-chart/src/main/java/com/fr/van/chart/pie/RadiusCardLayoutPane.java b/designer-chart/src/main/java/com/fr/van/chart/pie/RadiusCardLayoutPane.java index 4932eddb4..7befd40e7 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/pie/RadiusCardLayoutPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/pie/RadiusCardLayoutPane.java @@ -4,9 +4,10 @@ import com.fr.chart.chartattr.Plot; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; - import com.fr.plugin.chart.attr.radius.VanChartRadiusPlot; import com.fr.plugin.chart.base.VanChartRadius; import com.fr.plugin.chart.type.RadiusType; @@ -14,11 +15,11 @@ import com.fr.van.chart.layout.VanChartCardLayoutPane; import javax.swing.BorderFactory; import javax.swing.JPanel; +import java.util.HashMap; +import java.util.Map; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; -import java.util.HashMap; -import java.util.Map; /** * Created by hufan on 2016/10/25. @@ -40,8 +41,8 @@ public class RadiusCardLayoutPane extends BasicBeanPane { Map paneList = new HashMap(); - radiusType = new UIButtonGroup(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Auto"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Fixed")}); - radius = new UISpinner(MIN_RADIUS, MAX_RADIUS, 1, 100); + radiusType = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Auto"), Toolkit.i18nText("Fine-Design_Chart_Fixed")}); + radius = new UISpinnerWithPx(100); radiusContent = new JPanel(new BorderLayout()); radiusContent.add(radius, BorderLayout.CENTER); diff --git a/designer-chart/src/main/java/com/fr/van/chart/pie/VanChartPieSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/pie/VanChartPieSeriesPane.java index a6a1a5e28..6253190da 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/pie/VanChartPieSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/pie/VanChartPieSeriesPane.java @@ -2,6 +2,8 @@ package com.fr.van.chart.pie; import com.fr.chart.chartattr.Plot; +import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; @@ -27,7 +29,7 @@ public class VanChartPieSeriesPane extends VanChartAbstractPlotSeriesPane { protected UISpinner startAngle; protected UISpinner endAngle; - protected UISpinner innerRadius; + protected UINumberDragPane innerRadius; private UIButtonGroup supportRotation; public VanChartPieSeriesPane(ChartStylePane parent, Plot plot) { @@ -52,7 +54,7 @@ public class VanChartPieSeriesPane extends VanChartAbstractPlotSeriesPane { protected JPanel createSeriesStylePane(double[] row, double[] col) { startAngle = new UISpinner(MIN_ANGLE, MAX_ANGLE, 1, 0); endAngle = new UISpinner(MIN_ANGLE, MAX_ANGLE, 1, 0); - innerRadius = new UISpinner(0, 100, 1, 0); + innerRadius = new UINumberDragPaneWithPercent(0, 100, 1); supportRotation = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_On"), Toolkit.i18nText("Fine-Design_Chart_Off")}, new Boolean[]{true, false}); @@ -86,7 +88,7 @@ public class VanChartPieSeriesPane extends VanChartAbstractPlotSeriesPane { PiePlot4VanChart piePlot4VanChart = (PiePlot4VanChart) plot; startAngle.setValue(piePlot4VanChart.getStartAngle()); endAngle.setValue(piePlot4VanChart.getEndAngle()); - innerRadius.setValue(piePlot4VanChart.getInnerRadiusPercent()); + innerRadius.populateBean(piePlot4VanChart.getInnerRadiusPercent()); supportRotation.setSelectedIndex(piePlot4VanChart.isSupportRotation() == true ?0:1); } } @@ -107,7 +109,7 @@ public class VanChartPieSeriesPane extends VanChartAbstractPlotSeriesPane { PiePlot4VanChart piePlot4VanChart = (PiePlot4VanChart)plot; piePlot4VanChart.setStartAngle(startAngle.getValue()); piePlot4VanChart.setEndAngle(endAngle.getValue()); - piePlot4VanChart.setInnerRadiusPercent(innerRadius.getValue()); + piePlot4VanChart.setInnerRadiusPercent(innerRadius.updateBean()); piePlot4VanChart.setSupportRotation(supportRotation.getSelectedItem()); } } diff --git a/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/StructureNodeStylePane.java b/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/StructureNodeStylePane.java index 610c616d9..333646c3c 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/StructureNodeStylePane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/StructureNodeStylePane.java @@ -3,13 +3,15 @@ package com.fr.van.chart.structure.desinger.style; import com.fr.base.background.ImageBackground; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.backgroundpane.ImageBackgroundQuickPane; - import com.fr.plugin.chart.base.AttrNode; import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.component.background.VanChartMarkerBackgroundPane; @@ -42,38 +44,46 @@ public class StructureNodeStylePane extends BasicBeanPane { double[] columnSize = {f, e}; double[] rowSize = {p, p, p, p, p}; - nodeRadiusType = new UIButtonGroup(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Automatic"), - com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom")}); - nodeRadius = new UISpinner(0,Double.MAX_VALUE,0.5,0); - nodeBorderWidth = new UISpinner(0,Double.MAX_VALUE,0.5,0); - nodeBorderColor = new VanChartMarkerBackgroundPane(); - nodeOpacity = new UINumberDragPane(0,100); + nodeRadiusType = new UIButtonGroup<>(new String[]{Toolkit.i18nText("Fine-Design_Chart_Automatic"), + Toolkit.i18nText("Fine-Design_Chart_Custom")}); + nodeRadius = new UISpinnerWithPx(0, Double.MAX_VALUE, 0.5, 0); + nodeBorderWidth = new UISpinnerWithPx(0, Double.MAX_VALUE, 0.5, 0); + nodeBorderColor = new VanChartMarkerBackgroundPane() { + protected Component[][] getPaneComponents() { + return new Component[][]{ + new Component[]{null, null}, + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Node_Radius")), typeComboBox}, + new Component[]{null, centerPane}, + }; + } + }; + nodeOpacity = new UINumberDragPaneWithPercent(0, 100); JPanel jPanel = new JPanel(new BorderLayout()); - jPanel.add(TableLayout4VanChartHelper.createGapTableLayoutPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Node_Radius"), nodeRadiusType), BorderLayout.NORTH); + jPanel.add(TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Node_Radius"), nodeRadiusType), BorderLayout.NORTH); nodeRadiusPane = TableLayout4VanChartHelper.createGapTableLayoutPane("", nodeRadius); jPanel.add(nodeRadiusPane, BorderLayout.CENTER); Component[][] components1 = new Component[][]{ new Component[]{null, null}, new Component[]{jPanel, null}, - new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Border_Width")), nodeBorderWidth}, - new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Style_Border_Color")), nodeBorderColor}, - new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Alpha")), nodeOpacity} + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Border_Width")), nodeBorderWidth}, + new Component[]{nodeBorderColor, null}, + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Report_Alpha")), nodeOpacity} }; JPanel panel1 = TableLayout4VanChartHelper.createGapTableLayoutPane(components1, rowSize, columnSize); - useImage = new UIButtonGroup(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_YES"), - com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_NO")}); + useImage = new UIButtonGroup<>(new String[]{Toolkit.i18nText("Fine-Design_Chart_YES"), + Toolkit.i18nText("Fine-Design_Chart_NO")}); imagePane = new ImageBackgroundQuickPane(false); - imagePane.setBorder(BorderFactory.createEmptyBorder(0,(int)TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH + TableLayout4VanChartHelper.COMPONENT_INTERVAL,0,0)); + imagePane.setBorder(BorderFactory.createEmptyBorder(0, (int) TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH + TableLayout4VanChartHelper.COMPONENT_INTERVAL, 0, 0)); Component[][] components = new Component[][]{ - new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Filled_With_Image")),useImage}, + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Filled_With_Image")), useImage}, }; JPanel useImagePane = TableLayoutHelper.createTableLayoutPane(components, new double[]{p}, columnSize); - JPanel panel2 = new JPanel(new BorderLayout(0,6)); + JPanel panel2 = new JPanel(new BorderLayout(0, 6)); panel2.add(useImagePane, BorderLayout.NORTH); panel2.add(imagePane, BorderLayout.CENTER); @@ -91,7 +101,7 @@ public class StructureNodeStylePane extends BasicBeanPane { } }); - this.setLayout(new BorderLayout(0,6)); + this.setLayout(new BorderLayout(0, 6)); this.add(panel1, BorderLayout.NORTH); this.add(panel2, BorderLayout.CENTER); } @@ -112,7 +122,7 @@ public class StructureNodeStylePane extends BasicBeanPane { nodeBorderColor.populate(ob.getBorderColor()); nodeOpacity.populateBean(ob.getOpacity()); useImage.setSelectedIndex(ob.isUseImage() ? 0 : 1); - if(ob.getImageBackground() != null) { + if (ob.getImageBackground() != null) { imagePane.populateBean(ob.getImageBackground()); } checkRadius(); diff --git a/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureSeriesPane.java index ee2cda46a..daa0eaa6e 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureSeriesPane.java @@ -3,9 +3,12 @@ package com.fr.van.chart.structure.desinger.style; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.design.gui.frpane.UINumberDragPane; +import com.fr.design.gui.frpane.UINumberDragPaneWithPercent; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.gui.ChartStylePane; @@ -43,7 +46,7 @@ public class VanChartStructureSeriesPane extends VanChartAbstractPlotSeriesPane double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = {f}; - double[] rowSize = {p,p,p}; + double[] rowSize = {p, p, p}; Component[][] components = new Component[][]{ new Component[]{createLinkPane()}, new Component[]{createNodePane()} @@ -57,10 +60,10 @@ public class VanChartStructureSeriesPane extends VanChartAbstractPlotSeriesPane private JPanel createLinkPane() { linkColor = new ColorSelectBox(100); - linkWidthType = new UIButtonGroup(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Automatic"), - com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom")}); - linkWidth = new UISpinner(0,Double.MAX_VALUE,0.5,0); - linkOpacity = new UINumberDragPane(0,100); + linkWidthType = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Automatic"), + Toolkit.i18nText("Fine-Design_Chart_Custom")}); + linkWidth = new UISpinnerWithPx(0, Double.MAX_VALUE, 0.5, 0); + linkOpacity = new UINumberDragPaneWithPercent(0, 100); linkWidthType.addChangeListener(new ChangeListener() { @Override @@ -73,10 +76,10 @@ public class VanChartStructureSeriesPane extends VanChartAbstractPlotSeriesPane double f = TableLayout.FILL; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; double[] columnSize = {f, e}; - double[] rowSize = {p,p,p,p}; + double[] rowSize = {p, p, p, p}; JPanel jPanel = new JPanel(new BorderLayout()); - jPanel.add(TableLayout4VanChartHelper.createGapTableLayoutPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Tree_Width")+" ", linkWidthType), BorderLayout.NORTH); + jPanel.add(TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Report_Tree_Width") + " ", linkWidthType), BorderLayout.NORTH); linkWidthPane = TableLayout4VanChartHelper.createGapTableLayoutPane(" ", linkWidth); jPanel.add(linkWidthPane, BorderLayout.CENTER); @@ -104,8 +107,8 @@ public class VanChartStructureSeriesPane extends VanChartAbstractPlotSeriesPane @Override public void populateBean(Plot plot) { super.populateBean(plot); - if(plot instanceof VanChartStructurePlot){ - VanChartStructurePlot structurePlot = (VanChartStructurePlot)plot; + if (plot instanceof VanChartStructurePlot) { + VanChartStructurePlot structurePlot = (VanChartStructurePlot) plot; linkColor.setSelectObject(structurePlot.getLinkColor()); linkWidthType.setSelectedIndex(structurePlot.isAutoLinkWidth() ? 0 : 1); linkWidth.setValue(structurePlot.getLinkWidth()); @@ -117,8 +120,8 @@ public class VanChartStructureSeriesPane extends VanChartAbstractPlotSeriesPane @Override public void updateBean(Plot plot) { super.updateBean(plot); - if(plot instanceof VanChartStructurePlot){ - VanChartStructurePlot structurePlot = (VanChartStructurePlot)plot; + if (plot instanceof VanChartStructurePlot) { + VanChartStructurePlot structurePlot = (VanChartStructurePlot) plot; structurePlot.setLinkColor(linkColor.getSelectObject()); structurePlot.setAutoLinkWidth(linkWidthType.getSelectedIndex() == 0); structurePlot.setLinkWidth(linkWidth.getValue()); @@ -126,16 +129,16 @@ public class VanChartStructureSeriesPane extends VanChartAbstractPlotSeriesPane } } - protected void populateCondition(ConditionAttr defaultAttr){ - if(nodeStylePane != null){ + protected void populateCondition(ConditionAttr defaultAttr) { + if (nodeStylePane != null) { AttrNode attrNode = defaultAttr.getExisted(AttrNode.class); nodeStylePane.populateBean(attrNode); } } - protected void updateCondition(ConditionAttr defaultAttr){ - if(nodeStylePane != null){ - AttrNode attrNode =defaultAttr.getExisted(AttrNode.class); + protected void updateCondition(ConditionAttr defaultAttr) { + if (nodeStylePane != null) { + AttrNode attrNode = defaultAttr.getExisted(AttrNode.class); if (attrNode != null) { defaultAttr.remove(attrNode); defaultAttr.addDataSeriesCondition(nodeStylePane.updateBean()); diff --git a/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudSeriesPane.java index 4e9c612c0..543b8139f 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudSeriesPane.java @@ -4,10 +4,12 @@ import com.fr.base.Utils; import com.fr.base.background.ImageBackground; import com.fr.base.background.ImageFileBackground; import com.fr.chart.chartattr.Plot; +import com.fr.design.constants.LayoutConstants; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.backgroundpane.ImageBackgroundQuickPane; @@ -61,7 +63,7 @@ public class VanChartWordCloudSeriesPane extends VanChartColorValueSeriesPane { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = {f}; - double[] rowSize = {p,p,p}; + double[] rowSize = {p, p, p}; Component[][] components = new Component[][]{ new Component[]{createWordCloudStylePane()}, }; @@ -71,42 +73,43 @@ public class VanChartWordCloudSeriesPane extends VanChartColorValueSeriesPane { return contentPane; } - private JPanel createWordCloudStylePane(){ + private JPanel createWordCloudStylePane() { double labelSize = LABEL_SIZE; double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; - double[] centerC = {labelSize,f,p,f}; + double[] centerC = {labelSize, f, p, f}; double[] centerR = {p}; - minRotation = new UISpinner(-MAX_ROTATION,MAX_ROTATION,1,0); + minRotation = new UISpinner(-MAX_ROTATION, MAX_ROTATION, 1, 0); maxRotation = new - UISpinner(-MAX_ROTATION,MAX_ROTATION,1,0); + UISpinner(-MAX_ROTATION, MAX_ROTATION, 1, 0); Component[][] centerComps = new Component[][]{ new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Rotation_Angle")), minRotation, new UILabel("-"), maxRotation}, }; - JPanel centerPanel = TableLayout4VanChartHelper.createGapTableLayoutPane(centerComps,centerR,centerC); + JPanel centerPanel = TableLayout4VanChartHelper.createGapTableLayoutPane(centerComps, centerR, centerC); double[] northC = {f, e}; - double[] northR = {p,p}; + double[] northR = {p, p}; fontNameComboBox = new UIComboBox(Utils.getAvailableFontFamilyNames4Report()); defineFontSize = new UIButtonGroup(new String[]{AUTO_FONT_SIZE, CUSTOM_FONT_SIZE}); Component[][] northComps = new Component[][]{ new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Font")), fontNameComboBox}, - new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom")), defineFontSize } + new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom")), defineFontSize} }; - JPanel northPanel = TableLayout4VanChartHelper.createGapTableLayoutPane(northComps,northR,northC); + JPanel northPanel = TableLayout4VanChartHelper.createGapTableLayoutPane(northComps, northR, northC); - minFontSize = new UISpinner(0,Double.MAX_VALUE,1,10); - maxFontSize = new UISpinner(0,Double.MAX_VALUE,1,100); + minFontSize = new UISpinnerWithPx(10); + maxFontSize = new UISpinnerWithPx(100); Component[][] fontComps = new Component[][]{ new Component[]{null, minFontSize, new UILabel("-"), maxFontSize}, }; - fontPanel = TableLayout4VanChartHelper.createGapTableLayoutPane(fontComps,centerR,centerC); + fontPanel = TableLayoutHelper.createGapTableLayoutPane(fontComps, centerR, centerC, + 6, LayoutConstants.VGAP_LARGE); double[] columnSize = {f}; double[] rowSize = {p, p, p, p}; @@ -132,27 +135,27 @@ public class VanChartWordCloudSeriesPane extends VanChartColorValueSeriesPane { private JPanel createCloudShapePane() { cloudShape = new UIComboBox(CloudShapeType.getTypes()); - imageBackgroundQuickPane = new ImageBackgroundQuickPane(false){ + imageBackgroundQuickPane = new ImageBackgroundQuickPane(false) { @Override public Dimension getPreferredSize() { - if(cloudShape.getSelectedItem() == CloudShapeType.DEFAULT){ - return new Dimension(0,0); + if (cloudShape.getSelectedItem() == CloudShapeType.DEFAULT) { + return new Dimension(0, 0); } else { return super.getPreferredSize(); } } }; - JPanel panel = new JPanel(new BorderLayout(0,4)); + JPanel panel = new JPanel(new BorderLayout(0, 4)); panel.add(cloudShape, BorderLayout.NORTH); panel.add(imageBackgroundQuickPane, BorderLayout.CENTER); cloudShape.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { - CloudShapeType type = (CloudShapeType)cloudShape.getSelectedItem(); + CloudShapeType type = (CloudShapeType) cloudShape.getSelectedItem(); String path = type.getImageUrl(); - if(path != null) { + if (path != null) { ImageFileBackground imageBackground = new ImageFileBackground(IOUtils.readImage(path)); imageBackgroundQuickPane.populateBean(imageBackground); } else { @@ -181,8 +184,8 @@ public class VanChartWordCloudSeriesPane extends VanChartColorValueSeriesPane { @Override public void populateBean(Plot plot) { super.populateBean(plot); - if(plot instanceof VanChartWordCloudPlot){ - VanChartWordCloudPlot wordCloudPlot = (VanChartWordCloudPlot)plot; + if (plot instanceof VanChartWordCloudPlot) { + VanChartWordCloudPlot wordCloudPlot = (VanChartWordCloudPlot) plot; fontNameComboBox.setSelectedItem(wordCloudPlot.getFont().getFamily()); minRotation.setValue(wordCloudPlot.getMinRotation()); maxRotation.setValue(wordCloudPlot.getMaxRotation()); @@ -193,7 +196,7 @@ public class VanChartWordCloudSeriesPane extends VanChartColorValueSeriesPane { cloudShape.setSelectedItem(wordCloudPlot.getShapeType()); ImageBackground imageBackground = wordCloudPlot.getShapeImage(); - if(imageBackground != null) { + if (imageBackground != null) { imageBackgroundQuickPane.populateBean(imageBackground); } } @@ -209,8 +212,8 @@ public class VanChartWordCloudSeriesPane extends VanChartColorValueSeriesPane { @Override public void updateBean(Plot plot) { super.updateBean(plot); - if(plot instanceof VanChartWordCloudPlot){ - VanChartWordCloudPlot wordCloudPlot = (VanChartWordCloudPlot)plot; + if (plot instanceof VanChartWordCloudPlot) { + VanChartWordCloudPlot wordCloudPlot = (VanChartWordCloudPlot) plot; wordCloudPlot.setFont(FRFont.getInstance(fontNameComboBox.getSelectedItem().toString(), Font.PLAIN, 9)); wordCloudPlot.setMinRotation(minRotation.getValue()); wordCloudPlot.setMaxRotation(maxRotation.getValue()); @@ -220,7 +223,7 @@ public class VanChartWordCloudSeriesPane extends VanChartColorValueSeriesPane { wordCloudPlot.setMaxFontSize(maxFontSize.getValue()); wordCloudPlot.setShapeType((CloudShapeType) cloudShape.getSelectedItem()); - if(wordCloudPlot.getShapeType() != CloudShapeType.DEFAULT) { + if (wordCloudPlot.getShapeType() != CloudShapeType.DEFAULT) { wordCloudPlot.setShapeImage((ImageBackground) imageBackgroundQuickPane.updateBean()); } else { wordCloudPlot.setShapeImage(null); From d91bbc8cd706d42055f3fdee234f481c7edbdd60 Mon Sep 17 00:00:00 2001 From: shine Date: Mon, 25 Jan 2021 16:49:09 +0800 Subject: [PATCH 08/16] =?UTF-8?q?CHART-18006=20design=20=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=20=E6=8F=90=E7=A4=BA=E4=B8=8B=E8=BD=BD=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/chart/ChartDesignerActivator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer-chart/src/main/java/com/fr/design/chart/ChartDesignerActivator.java b/designer-chart/src/main/java/com/fr/design/chart/ChartDesignerActivator.java index 0cd81f783..446ed1e61 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/ChartDesignerActivator.java +++ b/designer-chart/src/main/java/com/fr/design/chart/ChartDesignerActivator.java @@ -14,6 +14,7 @@ import com.fr.locale.LocaleMarker; import com.fr.locale.LocaleScope; import com.fr.module.Activator; import com.fr.module.extension.Prepare; +import com.fr.plugin.chart.DownloadSourcesHelper; import com.fr.plugin.chart.vanchart.export.ImagePainter; import com.fr.stable.bridge.StableFactory; import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider; @@ -44,7 +45,7 @@ public class ChartDesignerActivator extends Activator implements Prepare { DesignModuleFactory.registerExtraWidgetOptions(ChartTypeInterfaceManager.initWidgetOption()); - ImagePainter.registerDownloadSourcesEvent(new DownloadOnlineSourcesHelper()); + DownloadSourcesHelper.registerDownloadSourcesEvent(new DownloadOnlineSourcesHelper()); ImagePainter.registerDefaultCallbackEvent(HistoryTemplateListCache.getInstance()); ChartTypeInterfaceManager.addPluginChangedListener(); From f5509f100b3134c0bfcbfd8624463c8e2a7e17d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Mon, 25 Jan 2021 17:19:41 +0800 Subject: [PATCH 09/16] =?UTF-8?q?CHART-17775=20=E5=88=A0=E9=99=A4=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/ispinner/chart/UISpinnerWithUnit.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithUnit.java b/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithUnit.java index d8d8ab849..84ac5fbcb 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithUnit.java +++ b/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithUnit.java @@ -23,9 +23,4 @@ public class UISpinnerWithUnit extends UISpinner { protected UINumberField initNumberField() { return new UINumberFieldWithUnit(3, unit); } - - @Override - public UINumberFieldWithUnit getTextField() { - return (UINumberFieldWithUnit) super.getTextField(); - } } From 2ad39c8eec604157768fa4f92428c19327686033 Mon Sep 17 00:00:00 2001 From: "Qinghui.Liu" Date: Mon, 25 Jan 2021 17:28:06 +0800 Subject: [PATCH 10/16] =?UTF-8?q?CHART-18050=20=E5=AF=8C=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E7=95=8C=E9=9D=A2=E8=AE=BE=E7=BD=AE=E4=B8=BA?= =?UTF-8?q?=E5=8F=AF=E6=8B=96=E6=8B=BD=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/component/richText/VanChartRichTextDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java index 2cf7050dc..e95ce977f 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java @@ -18,7 +18,7 @@ public class VanChartRichTextDialog extends BasicDialog { this.setTitle(Toolkit.i18nText("Fine-Design_Report_RichTextEditor")); this.setBasicDialogSize(DEFAULT); GUICoreUtils.centerWindow(this); - this.setResizable(false); + this.setResizable(true); this.setModal(true); } From 380e67d9e15ab35abd35795c8ae3ff3651bab21b Mon Sep 17 00:00:00 2001 From: "Qinghui.Liu" Date: Mon, 25 Jan 2021 20:03:40 +0800 Subject: [PATCH 11/16] =?UTF-8?q?CHART-18050=20=E4=BD=BF=E7=94=A8=E5=8F=8C?= =?UTF-8?q?=E5=88=97=E7=BD=91=E6=A0=BC=E5=B8=83=E5=B1=80=E4=BB=A3=E6=9B=BF?= =?UTF-8?q?=E6=B5=81=E5=BC=8F=E5=B8=83=E5=B1=80=EF=BC=8C=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/richText/VanChartFieldListPane.java | 2 +- .../component/richText/VanChartRichTextDialog.java | 2 +- .../designer/component/richText/VanChartRichTextPane.java | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldListPane.java index 6e0e587be..61d7cfb25 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldListPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldListPane.java @@ -162,7 +162,7 @@ public class VanChartFieldListPane extends JPanel { tableField.setPreferredSize(new Dimension(FIELD_ADD_W, tableFieldNameList.size() * FIELD_ADD_H)); - return TableLayout4VanChartHelper.createExpandablePaneWithTitleTopGap("数据集字段", tableField); + return TableLayout4VanChartHelper.createExpandablePaneWithTitleTopGap(Toolkit.i18nText("Fine-Design_Report_Table_Field"), tableField); } protected List getDefaultFieldButtonList() { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java index e95ce977f..2cf7050dc 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java @@ -18,7 +18,7 @@ public class VanChartRichTextDialog extends BasicDialog { this.setTitle(Toolkit.i18nText("Fine-Design_Report_RichTextEditor")); this.setBasicDialogSize(DEFAULT); GUICoreUtils.centerWindow(this); - this.setResizable(true); + this.setResizable(false); this.setModal(true); } diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextPane.java index b7c4e968d..d2d0769ee 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextPane.java @@ -1,6 +1,7 @@ package com.fr.van.chart.designer.component.richText; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.ui.ModernUIPane; import com.fr.plugin.chart.base.AttrTooltipContent; @@ -38,7 +39,8 @@ public class VanChartRichTextPane extends BasicBeanPane { } private JPanel createFieldContentPane() { - JPanel fieldPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + JPanel fieldPane = new JPanel(); + fieldPane.setLayout(FRGUIPaneFactory.create2ColumnGridLayout()); // 新增字段目录 JPanel fieldListContent = new JPanel(); @@ -48,12 +50,12 @@ public class VanChartRichTextPane extends BasicBeanPane { JScrollPane fieldListScrollPane = new JScrollPane(fieldListContent); fieldListScrollPane.setPreferredSize(new Dimension(FIELD_PANE_W, FIELD_PANE_H)); fieldListScrollPane.setHorizontalScrollBar(null); - fieldListScrollPane.setBorder(BorderFactory.createTitledBorder("添加字段")); + fieldListScrollPane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Report_Add_Field"))); // 字段格式和汇总 JScrollPane fieldAttrScrollPane = new JScrollPane(fieldAttrPane); fieldAttrScrollPane.setPreferredSize(new Dimension(FIELD_PANE_W, FIELD_PANE_H)); - fieldAttrScrollPane.setBorder(BorderFactory.createTitledBorder("字段设置")); + fieldAttrScrollPane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Report_Field_Setting"))); fieldPane.add(fieldListScrollPane); fieldPane.add(fieldAttrScrollPane); From a3603b0fa47f8846bd994486eb1b36fdad5100f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Tue, 26 Jan 2021 11:33:49 +0800 Subject: [PATCH 12/16] =?UTF-8?q?CHART-17983=20=E4=BB=AA=E8=A1=A8=E7=9B=98?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E5=80=BC=E9=BB=98=E8=AE=A4=20&&=20CHART-1802?= =?UTF-8?q?4=20=E6=95=B0=E6=8D=AE=E9=9B=86=E6=94=B9=E5=8F=98=EF=BC=8C?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E9=87=8D=E5=A4=8D=E5=AF=BC=E8=87=B4=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/gui/data/DatabaseTableDataPane.java | 15 ++++++++++----- .../data/table/MeterPlotTableDataContentPane.java | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/DatabaseTableDataPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/DatabaseTableDataPane.java index 3c5ebf535..40983c56b 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/DatabaseTableDataPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/DatabaseTableDataPane.java @@ -58,7 +58,7 @@ public class DatabaseTableDataPane extends BasicPane{ * 返回选中的数据源. */ public TableDataWrapper getTableDataWrapper() { - return tableNameCombox.getSelectedItem(); + return tableNameCombox.getSelectedItem(); } public void populateBean(TableData nameTableData) { @@ -68,12 +68,12 @@ public class DatabaseTableDataPane extends BasicPane{ tableNameCombox.setSelectedTableDataByName(((NameTableData)nameTableData).getName()); } } - + @Override protected String title4PopupWindow() { return null; } - + /** * 数据集列表选中后的事件 */ @@ -82,7 +82,12 @@ public class DatabaseTableDataPane extends BasicPane{ } private void initTableCombox() { - tableNameCombox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()); + tableNameCombox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()){ + //图表的数据集选择下拉框,不需要注册监听,chartEditPane已经注册了。 + public void registerDSChangeListener() { + + } + }; tableNameCombox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { @@ -94,7 +99,7 @@ public class DatabaseTableDataPane extends BasicPane{ } }); } - + private void initReviewButton() { reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png")); reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR)); diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java index c7830f246..bc18fafda 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java @@ -56,6 +56,7 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane this.setLayout(new BorderLayout()); nameBox = new UIComboBoxWithNone(); + nameBox.setSelectedIndex(nameBox.getItemCount() -1); valueBox = new UIComboBox(); targetBox = new UIComboBox(); custom = new TinyFormulaPane(); From 8150429bb4292d9ec828b23a22ac5e855799b820 Mon Sep 17 00:00:00 2001 From: Yvan Date: Tue, 26 Jan 2021 14:04:14 +0800 Subject: [PATCH 13/16] =?UTF-8?q?REPORT-43833=20=E3=80=9010.0.14=E3=80=91?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1=E6=95=B0=E6=8D=AE=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5/=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E5=A2=9E=E5=8A=A0=E9=94=81=E5=AE=9A=20=E3=80=90?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0=E3=80=91=E5=9C=A8=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E5=90=AF=E5=8A=A8=E7=9A=84=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E4=B8=AD=EF=BC=8CUILockButton=E4=BC=9A=E8=B0=83=E7=94=A8isLock?= =?UTF-8?q?ed=E6=96=B9=E6=B3=95=EF=BC=8C=E6=AD=A4=E6=97=B6=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E7=A9=BA=E9=97=B4=E5=AF=B9=E8=B1=A1=E6=B1=A0=E4=B8=AD?= =?UTF-8?q?=E8=BF=98=E6=B2=A1=E6=9C=89=E5=AF=B9=E8=B1=A1=EF=BC=8C=E5=9B=A0?= =?UTF-8?q?=E6=AD=A4=E8=8E=B7=E5=8F=96=E5=88=B0=E7=9A=84operator=E6=98=AFn?= =?UTF-8?q?ull=EF=BC=8C=E4=BC=9A=E6=8A=A5npe=20=E3=80=90=E6=94=B9=E5=8A=A8?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E3=80=91=E5=81=9A=E4=B8=AA=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/editlock/EditLockUtils.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java index 2ab10fb92..4f332a170 100644 --- a/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java @@ -74,6 +74,8 @@ public class EditLockUtils { } public static boolean isLocked(LockItem lockItem) { - return WorkContext.getCurrent().get(EditLockOperator.class).isLocked(lockItem); + EditLockOperator operator = WorkContext.getCurrent().get(EditLockOperator.class); + // 启动过程中UILockButton初始化的时候会调用这个方法,但是此时workObjectPool中还没有对象,会报npe + return operator != null && operator.isLocked(lockItem); } } From 0a54abe4727ff07eb2ae843eddf0bf140e00374b Mon Sep 17 00:00:00 2001 From: Hades Date: Wed, 27 Jan 2021 10:37:52 +0800 Subject: [PATCH 14/16] =?UTF-8?q?REPORT-45901=20=E3=80=9010.0.14=E3=80=91?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=A4=9A=E5=BC=80=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/DesignerEnvManager.java | 6 +++ .../design/fun/DesignerLifecycleMonitor.java | 31 ++++++++++++ .../fr/design/fun/DesignerPortProvider.java | 31 ++++++++++++ .../DesignerLifecycleMonitorContext.java | 47 +++++++++++++++++++ .../com/fr/design/utils/DesignerPort.java | 7 ++- .../main/java/com/fr/exit/DesignerExiter.java | 4 +- .../main/java/com/fr/start/BaseDesigner.java | 2 + .../main/java/com/fr/start/MainDesigner.java | 2 + 8 files changed, 127 insertions(+), 3 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/fun/DesignerLifecycleMonitor.java create mode 100644 designer-base/src/main/java/com/fr/design/fun/DesignerPortProvider.java create mode 100644 designer-base/src/main/java/com/fr/design/monitor/DesignerLifecycleMonitorContext.java diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 791d679b3..4adcfc1b3 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -15,6 +15,7 @@ import com.fr.design.env.DesignerWorkspaceType; import com.fr.design.env.LocalDesignerWorkspaceInfo; import com.fr.design.env.RemoteDesignerWorkspaceInfo; import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.fun.DesignerPortProvider; import com.fr.design.i18n.Toolkit; import com.fr.design.locale.impl.ProductImproveMark; import com.fr.design.mainframe.vcs.VcsConfigManager; @@ -42,6 +43,7 @@ import com.fr.stable.ListMap; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; +import com.fr.stable.bridge.StableFactory; import com.fr.stable.core.UUID; import com.fr.stable.project.ProjectConstants; import com.fr.stable.xml.XMLPrintWriter; @@ -842,6 +844,10 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * 返回Jetty服务器的端口号 */ public int getEmbedServerPort() { + DesignerPortProvider portProvider = StableFactory.getMarkedInstanceObjectFromClass(DesignerPortProvider.MARK_STRING, DesignerPortProvider.class); + if (portProvider != null) { + return portProvider.embeddedServerPort(); + } return this.jettyServerPort; } diff --git a/designer-base/src/main/java/com/fr/design/fun/DesignerLifecycleMonitor.java b/designer-base/src/main/java/com/fr/design/fun/DesignerLifecycleMonitor.java new file mode 100644 index 000000000..812ef8ac6 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/fun/DesignerLifecycleMonitor.java @@ -0,0 +1,31 @@ +package com.fr.design.fun; + +/** + * 设计器生命周期接口 + * + * @author hades + * @version 10.0 + * Created by hades on 2021/1/26 + */ +public interface DesignerLifecycleMonitor { + + String MARK_STRING = "DesignerLifecycleMonitor"; + + int CURRENT_LEVEL = 1; + + /** + * 设计器启动之前 + */ + void beforeStart(); + + /** + * 设计器启动完成 界面出现之后 + */ + void afterStart(); + + /** + * 设计器关闭退出之前 + */ + void beforeStop(); + +} diff --git a/designer-base/src/main/java/com/fr/design/fun/DesignerPortProvider.java b/designer-base/src/main/java/com/fr/design/fun/DesignerPortProvider.java new file mode 100644 index 000000000..2b0178c61 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/fun/DesignerPortProvider.java @@ -0,0 +1,31 @@ +package com.fr.design.fun; + +/** + * 设计器所有端口获取 + * + * @author hades + * @version 10.0 + * Created by hades on 2021/1/18 + */ +public interface DesignerPortProvider { + + String MARK_STRING = "DesignerPortProvider"; + + int CURRENT_LEVEL = 1; + + + /** + * 设计器自身端口 + * + * @return + */ + int messagePort(); + + /** + * 内置服务器端口 + * + * @return + */ + int embeddedServerPort(); + +} diff --git a/designer-base/src/main/java/com/fr/design/monitor/DesignerLifecycleMonitorContext.java b/designer-base/src/main/java/com/fr/design/monitor/DesignerLifecycleMonitorContext.java new file mode 100644 index 000000000..a50a04819 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/monitor/DesignerLifecycleMonitorContext.java @@ -0,0 +1,47 @@ +package com.fr.design.monitor; + +import com.fr.design.fun.DesignerLifecycleMonitor; +import com.fr.stable.bridge.StableFactory; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/1/27 + */ +public class DesignerLifecycleMonitorContext { + + private static DesignerLifecycleMonitor monitor; + + static { + DesignerLifecycleMonitor designerLifecycleMonitor = StableFactory.getMarkedInstanceObjectFromClass(DesignerLifecycleMonitor.MARK_STRING, DesignerLifecycleMonitor.class); + if (designerLifecycleMonitor != null) { + monitor = designerLifecycleMonitor; + } else { + monitor = new EmptyDesignerLifecycleMonitor(); + } + } + + public static DesignerLifecycleMonitor getMonitor() { + return monitor; + } + + static class EmptyDesignerLifecycleMonitor implements DesignerLifecycleMonitor { + + @Override + public void beforeStart() { + + } + + @Override + public void afterStart() { + + } + + @Override + public void beforeStop() { + + } + } + + +} diff --git a/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java b/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java index 1ad1948bf..474c29a8f 100644 --- a/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java +++ b/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java @@ -4,6 +4,7 @@ import com.fr.common.report.ReportState; import com.fr.design.DesignerEnvManager; import com.fr.design.RestartHelper; import com.fr.design.dialog.TipDialog; +import com.fr.design.fun.DesignerPortProvider; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; @@ -13,10 +14,10 @@ import com.fr.design.utils.gui.GUICoreUtils; import com.fr.exit.DesignerExiter; import com.fr.general.ComparatorUtils; import com.fr.general.IOUtils; -import com.fr.process.ProcessEventPipe; import com.fr.process.engine.core.CarryMessageEvent; import com.fr.process.engine.core.FineProcessContext; import com.fr.stable.StringUtils; +import com.fr.stable.bridge.StableFactory; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLReadable; import com.fr.stable.xml.XMLWriter; @@ -58,6 +59,10 @@ public class DesignerPort implements XMLReadable, XMLWriter { private int debugMessagePort = 51463; public int getMessagePort() { + DesignerPortProvider portProvider = StableFactory.getMarkedInstanceObjectFromClass(DesignerPortProvider.MARK_STRING, DesignerPortProvider.class); + if (portProvider != null) { + return portProvider.messagePort(); + } return messagePort; } diff --git a/designer-base/src/main/java/com/fr/exit/DesignerExiter.java b/designer-base/src/main/java/com/fr/exit/DesignerExiter.java index b9067a22e..cda2e015b 100644 --- a/designer-base/src/main/java/com/fr/exit/DesignerExiter.java +++ b/designer-base/src/main/java/com/fr/exit/DesignerExiter.java @@ -1,10 +1,9 @@ package com.fr.exit; import com.fr.design.env.DesignerWorkspaceGenerator; +import com.fr.design.monitor.DesignerLifecycleMonitorContext; import com.fr.process.engine.core.FineProcessContext; import com.fr.process.engine.core.FineProcessEngineEvent; -import com.fr.stable.StableUtils; - /** * @author hades @@ -20,6 +19,7 @@ public class DesignerExiter { } public void execute() { + DesignerLifecycleMonitorContext.getMonitor().beforeStop(); beforeExit(); if (FineProcessContext.getParentPipe() != null) { FineProcessContext.getParentPipe().syncFire(FineProcessEngineEvent.DESTROY); diff --git a/designer-base/src/main/java/com/fr/start/BaseDesigner.java b/designer-base/src/main/java/com/fr/start/BaseDesigner.java index 7808bd7ec..5eaab74a5 100644 --- a/designer-base/src/main/java/com/fr/start/BaseDesigner.java +++ b/designer-base/src/main/java/com/fr/start/BaseDesigner.java @@ -14,6 +14,7 @@ import com.fr.design.fun.DesignerStartOpenFileProcessor; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; +import com.fr.design.monitor.DesignerLifecycleMonitorContext; import com.fr.design.ui.util.UIUtil; import com.fr.event.Event; import com.fr.event.EventDispatcher; @@ -75,6 +76,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { EventDispatcher.listen(DesignerLaunchStatus.STARTUP_COMPLETE, new Listener() { @Override public void on(Event event, Null param) { + DesignerLifecycleMonitorContext.getMonitor().afterStart(); EventDispatcher.stopListen(this); // 启动完成 停止监听 ProcessEventPipe eventPipe = FineProcessContext.getParentPipe(); diff --git a/designer-realize/src/main/java/com/fr/start/MainDesigner.java b/designer-realize/src/main/java/com/fr/start/MainDesigner.java index a9a1ccbd1..162a2044f 100644 --- a/designer-realize/src/main/java/com/fr/start/MainDesigner.java +++ b/designer-realize/src/main/java/com/fr/start/MainDesigner.java @@ -36,6 +36,7 @@ import com.fr.design.menu.ShortCut; import com.fr.design.module.ChartEmptyDataStyleAction; import com.fr.design.module.ChartPreStyleAction; import com.fr.design.module.DesignModuleFactory; +import com.fr.design.monitor.DesignerLifecycleMonitorContext; import com.fr.design.utils.concurrent.ThreadFactoryBuilder; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.event.Event; @@ -102,6 +103,7 @@ public class MainDesigner extends BaseDesigner { StopWatch watch = new StopWatch(); watch.start(); + DesignerLifecycleMonitorContext.getMonitor().beforeStart(); //启动运行时 FineRuntime.start(); DesignerSubListener.getInstance().start(); From 1f5f4613a1f8d589b43e8643f3af04739d763e0d Mon Sep 17 00:00:00 2001 From: Hades Date: Wed, 27 Jan 2021 11:40:29 +0800 Subject: [PATCH 15/16] =?UTF-8?q?REPORT-45901=20=E3=80=9010.0.14=E3=80=91o?= =?UTF-8?q?em=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=A4=9A=E5=BC=80=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20--=E5=8A=A0=E4=B8=8A=E7=AB=AF=E5=8F=A3=E9=99=90?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/DesignerEnvManager.java | 7 ++-- .../fr/design/port/DesignerPortContext.java | 32 +++++++++++++++++++ .../com/fr/design/utils/DesignerPort.java | 11 ++++--- 3 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/port/DesignerPortContext.java diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 4adcfc1b3..b8951ea8b 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -20,6 +20,7 @@ import com.fr.design.i18n.Toolkit; import com.fr.design.locale.impl.ProductImproveMark; import com.fr.design.mainframe.vcs.VcsConfigManager; import com.fr.design.notification.SnapChatConfig; +import com.fr.design.port.DesignerPortContext; import com.fr.design.update.push.DesignerPushUpdateConfigManager; import com.fr.design.style.color.ColorSelectConfigManager; import com.fr.design.utils.DesignUtils; @@ -844,9 +845,9 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * 返回Jetty服务器的端口号 */ public int getEmbedServerPort() { - DesignerPortProvider portProvider = StableFactory.getMarkedInstanceObjectFromClass(DesignerPortProvider.MARK_STRING, DesignerPortProvider.class); - if (portProvider != null) { - return portProvider.embeddedServerPort(); + int embeddedServerPort = DesignerPortContext.getEmbeddedServerPort(); + if (embeddedServerPort >= DesignerPort.MIN_PORT && embeddedServerPort <= DesignerPort.MAX_PORT) { + return embeddedServerPort; } return this.jettyServerPort; } diff --git a/designer-base/src/main/java/com/fr/design/port/DesignerPortContext.java b/designer-base/src/main/java/com/fr/design/port/DesignerPortContext.java new file mode 100644 index 000000000..e1e40ddfb --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/port/DesignerPortContext.java @@ -0,0 +1,32 @@ +package com.fr.design.port; + +import com.fr.design.fun.DesignerPortProvider; +import com.fr.stable.bridge.StableFactory; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/1/27 + */ +public class DesignerPortContext { + + private static int messagePort = -1; + + private static int embeddedServerPort = -1; + + static { + DesignerPortProvider designerPortProvider = StableFactory.getMarkedInstanceObjectFromClass(DesignerPortProvider.MARK_STRING, DesignerPortProvider.class); + if (designerPortProvider != null) { + messagePort = designerPortProvider.messagePort(); + embeddedServerPort = designerPortProvider.embeddedServerPort(); + } + } + + public static int getMessagePort() { + return messagePort; + } + + public static int getEmbeddedServerPort() { + return embeddedServerPort; + } +} diff --git a/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java b/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java index 474c29a8f..28ab5e4c1 100644 --- a/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java +++ b/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java @@ -10,6 +10,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.port.DesignerPortContext; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.exit.DesignerExiter; import com.fr.general.ComparatorUtils; @@ -36,8 +37,8 @@ import java.awt.event.ActionListener; public class DesignerPort implements XMLReadable, XMLWriter { public static final String XML_TAG = "DesignerPort"; - private static final int MIN_PORT = 1024; - private static final int MAX_PORT = 65535; + public static final int MIN_PORT = 1024; + public static final int MAX_PORT = 65535; public static final DesignerPort INSTANCE = new DesignerPort(); @@ -59,9 +60,9 @@ public class DesignerPort implements XMLReadable, XMLWriter { private int debugMessagePort = 51463; public int getMessagePort() { - DesignerPortProvider portProvider = StableFactory.getMarkedInstanceObjectFromClass(DesignerPortProvider.MARK_STRING, DesignerPortProvider.class); - if (portProvider != null) { - return portProvider.messagePort(); + int extraMessagePort = DesignerPortContext.getMessagePort(); + if (extraMessagePort >= MIN_PORT && extraMessagePort <= MAX_PORT) { + return extraMessagePort; } return messagePort; } From 8173e27685e900e81f3270ee477c244678f55b6f Mon Sep 17 00:00:00 2001 From: Yvan Date: Wed, 27 Jan 2021 14:56:27 +0800 Subject: [PATCH 16/16] =?UTF-8?q?REPORT-43833=20=E3=80=9010.0.14=E3=80=91?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1=E6=95=B0=E6=8D=AE=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5/=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E5=A2=9E=E5=8A=A0=E9=94=81=E5=AE=9A=20=E6=BC=8F?= =?UTF-8?q?=E6=8E=89=E4=BA=86=E8=BF=99=E4=B8=AApanel=EF=BC=8C=E5=B0=86?= =?UTF-8?q?=E8=A7=A3=E9=94=81=E6=94=BE=E5=88=B0aftercommit()=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/data/datapane/connect/ConnectionComboBoxPanel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java index afd65f3e5..d441984c2 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionComboBoxPanel.java @@ -144,8 +144,6 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { connectionListDialog.setDoOKSucceed(false); return; } - // 关闭定义数据连接页面,为其解锁 - EditLockUtils.unlock(LockItem.CONNECTION); Configurations.modify(new WorkerFacade(ConnectionConfig.class) { @Override public void run() { @@ -161,6 +159,8 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel { @Override public void afterCommit() { DesignerContext.getDesignerBean("databasename").refreshBeanElement(); + // 关闭定义数据连接页面,为其解锁 + EditLockUtils.unlock(LockItem.CONNECTION); } }));