diff --git a/designer-base/src/main/java/com/fr/base/svg/IconUtils.java b/designer-base/src/main/java/com/fr/base/svg/IconUtils.java
index 45c11c60c..4b5f1b881 100644
--- a/designer-base/src/main/java/com/fr/base/svg/IconUtils.java
+++ b/designer-base/src/main/java/com/fr/base/svg/IconUtils.java
@@ -38,9 +38,8 @@ public class IconUtils {
if (IOUtils.readResource(resource) != null) {
return SVGIcon.readSVGIcon(resource);
}
- // 适配某些插件里是_normal.png、_selected.png的情况
- String pngResource = resource.replace(ICON_SUFFIX_SVG, ICON_SUFFIX_PNG);
- return IOUtils.readIcon(pngResource);
+ // 适配插件
+ return adjustPluginsPng(resource);
}
return IOUtils.readIcon(resource);
}
@@ -48,6 +47,17 @@ public class IconUtils {
return readNoSuffixResource(resource, ICON_TYPE_NORMAL);
}
+ /**
+ * 适配插件中使用_normal.png、_selected.png、_disabled.png的情况
+ * @param resource 图片路径
+ * @return Icon
+ */
+ private static Icon adjustPluginsPng(String resource) {
+ String pngResource = resource.replace(ICON_SUFFIX_SVG, ICON_SUFFIX_PNG);
+ // 考虑到某些插件可能只会使用三种图标中的一部分,这里做个判断,不然就会因为资源不存在而报错
+ return IOUtils.readResource(pngResource) == null ? new ImageIcon() : IOUtils.readIcon(pngResource);
+ }
+
/**
* 尝试读取不带扩展名的图标,svg优先,其次png,最后gif,都没读到就打印错误日志,返回空白Icon
* @param resource 图片路径
diff --git a/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java b/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java
index 24dd31484..e5930ee91 100644
--- a/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java
+++ b/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java
@@ -1,8 +1,11 @@
package com.fr.design;
import com.fr.base.Parameter;
+import com.fr.base.ParameterConfig;
+import com.fr.base.TableData;
import com.fr.base.io.BaseBook;
import com.fr.data.TableDataSource;
+import com.fr.data.operator.DataOperator;
import com.fr.design.file.HistoryTemplateListCache;
import com.fr.design.mainframe.DesignerFrameFileDealerPane;
import com.fr.design.mainframe.JTemplate;
@@ -11,9 +14,14 @@ import com.fr.form.ui.DataControl;
import com.fr.form.ui.MultiFileEditor;
import com.fr.form.ui.Widget;
import com.fr.general.ComparatorUtils;
+import com.fr.log.FineLoggerFactory;
+import com.fr.stable.Filter;
+import com.fr.stable.ParameterProvider;
import com.fr.stable.StringUtils;
import com.fr.stable.js.WidgetName;
+import com.fr.util.ParameterApplyHelper;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -40,7 +48,7 @@ public abstract class DesignModelAdapter tableDataParametersMap = new HashMap<>();
+
+
public DesignModelAdapter(S jTemplate) {
this.jTemplate = jTemplate;
@@ -241,6 +255,79 @@ public abstract class DesignModelAdapter map, Filter filter) {
+ Iterator it = this.getBook().getTableDataNameIterator();
+ try {
+ // 清空下缓存
+ tableDataParametersMap.clear();
+ while (it.hasNext()) {
+ String name = it.next();
+ TableData tableData = this.getBook().getTableData(name);
+ ParameterProvider[] parameterProviders = DataOperator.getInstance().getTableDataParameters(tableData);
+ if (filter != null) {
+ ParameterApplyHelper.addPara2Map(map, parameterProviders, filter);
+ } else {
+ ParameterApplyHelper.addPara2Map(map, parameterProviders);
+ }
+ tableDataParametersMap.put(name, parameterProviders);
+ }
+ } catch (Exception e) {
+ FineLoggerFactory.getLogger().error(e.getMessage(), e);
+ }
+ }
+
+ protected void updateTableDataParameters(String oldName,
+ String tdName,
+ TableData tableData,
+ Map map,
+ Filter filter) {
+
+ ParameterProvider[] providers = null;
+
+ if (!ComparatorUtils.equals(oldName, tdName)) {
+ // 更新下缓存名称 替换下数据集名称
+ providers = tableDataParametersMap.remove(oldName);
+ if (providers != null) {
+ tableDataParametersMap.put(tdName, providers);
+ }
+ }
+
+
+ try {
+ for (Map.Entry entry : tableDataParametersMap.entrySet()) {
+ ParameterProvider[] parameterProviders;
+ if (ComparatorUtils.equals(entry.getKey(), tdName)) {
+ parameterProviders = DataOperator.getInstance().getTableDataParameters(tableData);
+ // 用来更新缓存
+ providers = parameterProviders;
+ } else {
+ parameterProviders = entry.getValue();
+ }
+
+ if (filter != null) {
+ ParameterApplyHelper.addPara2Map(map, parameterProviders, filter);
+ } else {
+ ParameterApplyHelper.addPara2Map(map, parameterProviders);
+ }
+
+ }
+ } catch (Exception e) {
+ FineLoggerFactory.getLogger().error(e.getMessage(), e);
+ }
+
+ if (providers != null) {
+ // 更新缓存
+ tableDataParametersMap.put(tdName, providers);
+ }
+ }
+
+ protected void addGlobalParameters(Map map) {
+ // 添加全局参数
+ Parameter[] glbParas = ParameterConfig.getInstance().getGlobalParameters();
+ ParameterApplyHelper.addPara2Map(map, glbParas);
+
+ }
+
/**
* 环境改变.
*/
@@ -251,6 +338,11 @@ public abstract class DesignModelAdapter= DesignerPort.MIN_PORT && embeddedServerPort <= DesignerPort.MAX_PORT) {
+ return embeddedServerPort;
+ }
return this.jettyServerPort;
}
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..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
@@ -1,19 +1,23 @@
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.imenu.UILockMenuItem;
+import com.fr.design.gui.imenu.UIMenuItem;
import com.fr.design.menu.MenuKeySet;
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.report.LockItem;
-import javax.swing.*;
+import javax.swing.KeyStroke;
import java.awt.event.ActionEvent;
import java.util.Map;
@@ -53,8 +57,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 +108,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, null, 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..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
@@ -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,7 +12,11 @@ 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;
@@ -22,9 +25,10 @@ import com.fr.file.TableDataConfig;
import com.fr.transaction.CallBackAdaptor;
import com.fr.transaction.Configurations;
import com.fr.transaction.WorkerFacade;
+import com.fr.report.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 +70,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 +102,6 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS
globalTableDataDialog.setDoOKSucceed(false);
return;
}
-
DesignTableDataManager.clearGlobalDs();
// 保存时 移除服务器数据集列名缓存
for (String name : tableDataConfig.getTableDatas().keySet()) {
@@ -114,9 +125,18 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS
// 刷新共有数据集
TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter());
fireDSChanged(globalTableDataPane.getDsChangedNameMap());
+ // 关闭服务器数据集页面,为其解锁
+ EditLockUtils.unlock(LockItem.SERVER_TABLE_DATA);
}
}));
}
+
+ @Override
+ public void doCancel() {
+ super.doCancel();
+ // 关闭服务器数据集页面,为其解锁
+ EditLockUtils.unlock(LockItem.SERVER_TABLE_DATA);
+ }
});
globalTableDataDialog.setVisible(true);
}
@@ -166,4 +186,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, null, 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/TableDataTreePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java
index 2298fc833..2356de6d4 100644
--- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java
+++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java
@@ -228,7 +228,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
}
fireDSChanged(map);
tc.fireTargetModified();
- tc.parameterChanged();
+ tc.tableDataParametersChanged(oldName, tdName, td);
int[] rows = dataTree.getSelectionRows();
dataTree.refreshChildByName(tdName);
dataTree.setSelectionRows(rows);
@@ -366,7 +366,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
}
fireDSChanged(map);
tc.fireTargetModified();
- tc.parameterChanged();
+ tc.tableDataParametersChanged(oldName, tdName, td);
int[] rows = dataTree.getSelectionRows();
dataTree.refreshChildByName(tdName);
dataTree.setSelectionRows(rows);
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..1ce37b4c5 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.report.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,24 @@ 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,
+ null
+ );
+ editButton.setPreferredSize(buttonSize);
+ editButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+ editItems();
+ }
+ });
+ ConnectionLockChangeChecker.getInstance().addEditLockChangeListener((UILockButton) editButton);
+ return editButton;
+ }
+
/*
* 刷新ComboBox.items
*/
@@ -97,6 +124,14 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel {
* 弹出对话框编辑Items
*/
protected void editItems() {
+ // 尝试为数据连接加锁
+ boolean actionLock = EditLockUtils.lock(LockItem.CONNECTION);
+ if (!actionLock) {
+ // 锁定失败,代表已经被其他用户锁定,跳出弹窗提示
+ EditLockUtils.showLockMessage(this);
+ return;
+ }
+ // 锁定成功,执行后续操作
final ConnectionListPane connectionListPane = new ConnectionListPane();
final ConnectionConfig connectionConfig = ConnectionConfig.getInstance();
ConnectionConfig cloned = connectionConfig.mirror();
@@ -109,7 +144,6 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel {
connectionListDialog.setDoOKSucceed(false);
return;
}
-
Configurations.modify(new WorkerFacade(ConnectionConfig.class) {
@Override
public void run() {
@@ -125,10 +159,19 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel {
@Override
public void afterCommit() {
DesignerContext.getDesignerBean("databasename").refreshBeanElement();
+ // 关闭定义数据连接页面,为其解锁
+ EditLockUtils.unlock(LockItem.CONNECTION);
}
}));
}
+
+ @Override
+ public void doCancel() {
+ // 关闭定义数据连接页面,为其解锁
+ super.doCancel();
+ EditLockUtils.unlock(LockItem.CONNECTION);
+ }
});
connectionListDialog.setVisible(true);
refreshItems();
@@ -158,4 +201,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..8eb6a4aa9
--- /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.report.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..d45c4c181
--- /dev/null
+++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java
@@ -0,0 +1,85 @@
+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;
+import com.fr.report.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) {
+ setLocked(locked);
+ fireChange();
+ }
+ } catch (Exception e) {
+ FineLoggerFactory.getLogger().error(e.getMessage(), e);
+ }
+ } else if (isLocked()){
+ // 如果不是远程环境,且此前的远程状态下为锁定的话,切换回来后需要将其修改为不锁定
+ setLocked(false);
+ fireChange();
+ }
+ }
+ }, 0, INTERVAL, TimeUnit.MILLISECONDS);
+ }
+
+ public void stop() {
+ this.scheduler.shutdown();
+ }
+
+ public void addEditLockChangeListener(EditLockChangeListener listener) {
+ this.listeners.add(listener);
+ }
+
+ private void fireChange() {
+ UIUtil.invokeLaterIfNeeded(new Runnable() {
+ @Override
+ public void run() {
+ for (EditLockChangeListener listener : EditLockChangeChecker.this.listeners) {
+ listener.updateLockedState(new EditLockChangeEvent(isLocked()));
+ }
+ }
+ });
+ }
+
+ public boolean isLocked() {
+ return this.isLocked;
+ }
+
+ public void setLocked(boolean locked) {
+ this.isLocked = locked;
+ }
+}
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..49b1a85ce
--- /dev/null
+++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockUtils.java
@@ -0,0 +1,87 @@
+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.general.IOUtils;
+import com.fr.workspace.WorkContext;
+import com.fr.workspace.server.lock.editlock.EditLockOperator;
+import com.fr.report.LockItem;
+import org.jetbrains.annotations.Nullable;
+
+import javax.swing.Icon;
+import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
+import java.awt.Component;
+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 = IOUtils.readIcon("/com/fr/design/images/m_web/warningIcon.png");
+
+ /**
+ * 数据连接锁定中
+ */
+ 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-Design_Basic_Remote_Design_Title_Hint");
+
+ /**
+ * 已经被锁,跳出弹窗提示
+ */
+ public static void showLockMessage() {
+ FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), EditLockUtils.LOCKED_MESSAGE, EditLockUtils.TOOLTIPS, JOptionPane.INFORMATION_MESSAGE, EditLockUtils.TOOLTIPS_ICON);
+ }
+
+ public static void showLockMessage(Component parentComponent) {
+ FineJOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(parentComponent), 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) {
+ EditLockOperator operator = WorkContext.getCurrent().get(EditLockOperator.class);
+ // 启动过程中UILockButton初始化的时候会调用这个方法,但是此时workObjectPool中还没有对象,会报npe
+ return operator != null && operator.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..e38a4e940
--- /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.report.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/extra/LoginWebBridge.java b/designer-base/src/main/java/com/fr/design/extra/LoginWebBridge.java
index 0862c7447..81e34335a 100644
--- a/designer-base/src/main/java/com/fr/design/extra/LoginWebBridge.java
+++ b/designer-base/src/main/java/com/fr/design/extra/LoginWebBridge.java
@@ -6,8 +6,12 @@ import com.fr.config.MarketConfig;
import com.fr.design.dialog.UIDialog;
import com.fr.design.extra.exe.PluginLoginExecutor;
import com.fr.design.gui.ilable.UILabel;
+import com.fr.design.locale.impl.BbsRegisterMark;
+import com.fr.design.locale.impl.BbsResetMark;
import com.fr.general.CloudCenter;
import com.fr.general.http.HttpClient;
+import com.fr.general.locale.LocaleCenter;
+import com.fr.general.locale.LocaleMark;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.StringUtils;
import javafx.concurrent.Task;
@@ -118,7 +122,8 @@ public class LoginWebBridge {
*/
public void registerHref() {
try {
- Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("bbs.register")));
+ LocaleMark registerMark = LocaleCenter.getMark(BbsRegisterMark.class);
+ Desktop.getDesktop().browse(new URI(registerMark.getValue()));
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
@@ -129,7 +134,8 @@ public class LoginWebBridge {
*/
public void forgetHref() {
try {
- Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("bbs.reset")));
+ LocaleMark resetMark = LocaleCenter.getMark(BbsResetMark.class);
+ Desktop.getDesktop().browse(new URI(resetMark.getValue()));
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginWebBridge.java b/designer-base/src/main/java/com/fr/design/extra/PluginWebBridge.java
index 159e6d6d9..d70901350 100644
--- a/designer-base/src/main/java/com/fr/design/extra/PluginWebBridge.java
+++ b/designer-base/src/main/java/com/fr/design/extra/PluginWebBridge.java
@@ -13,8 +13,13 @@ import com.fr.design.extra.exe.PluginLoginExecutor;
import com.fr.design.extra.exe.ReadUpdateOnlineExecutor;
import com.fr.design.extra.exe.SearchOnlineExecutor;
import com.fr.design.gui.ilable.UILabel;
+import com.fr.design.locale.impl.BbsRegisterMark;
+import com.fr.design.locale.impl.BbsResetMark;
+import com.fr.design.locale.impl.BbsSpaceMark;
import com.fr.design.utils.concurrent.ThreadFactoryBuilder;
import com.fr.general.CloudCenter;
+import com.fr.general.locale.LocaleCenter;
+import com.fr.general.locale.LocaleMark;
import com.fr.json.JSONObject;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.context.PluginMarker;
@@ -434,8 +439,8 @@ public class PluginWebBridge {
*/
public void getPriviteMessage() {
try {
- String loginUrl = CloudCenter.getInstance().acquireUrlByKind("bbs.default");
- Desktop.getDesktop().browse(new URI(loginUrl));
+ LocaleMark spaceMark = LocaleCenter.getMark(BbsSpaceMark.class);
+ Desktop.getDesktop().browse(new URI(spaceMark.getValue()));
} catch (Exception exp) {
FineLoggerFactory.getLogger().info(exp.getMessage());
}
@@ -497,7 +502,8 @@ public class PluginWebBridge {
*/
public void registerHref() {
try {
- Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("bbs.register")));
+ LocaleMark registerMark = LocaleCenter.getMark(BbsRegisterMark.class);
+ Desktop.getDesktop().browse(new URI(registerMark.getValue()));
} catch (Exception e) {
FineLoggerFactory.getLogger().info(e.getMessage());
}
@@ -511,7 +517,8 @@ public class PluginWebBridge {
*/
public void forgetHref() {
try {
- Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("bbs.reset")));
+ LocaleMark resetMark = LocaleCenter.getMark(BbsResetMark.class);
+ Desktop.getDesktop().browse(new URI(resetMark.getValue()));
} catch (Exception e) {
FineLoggerFactory.getLogger().info(e.getMessage());
}
diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java
index 81e76fa45..92fdd4878 100644
--- a/designer-base/src/main/java/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java
+++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java
@@ -44,40 +44,32 @@ public class InstallFromDiskCallback extends AbstractPluginTaskCallback {
FineLoggerFactory.getLogger().info(successInfo);
FineJOptionPane.showMessageDialog(null, successInfo);
} else if (result.errorCode() == PluginErrorCode.NeedDealWithPluginDependency) {
- int rv = FineJOptionPane.showOptionDialog(
+ int rv = FineJOptionPane.showConfirmDialog(
null,
- com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Plugin_Install_Dependence"),
- com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Plugin_Warning"),
- FineJOptionPane.YES_NO_CANCEL_OPTION,
- FineJOptionPane.INFORMATION_MESSAGE,
- null,
- FineJOptionPane.OPTION_YES_NO_CANCEL,
- null
+ Toolkit.i18nText("Fine-Design_Basic_Plugin_Install_Dependence"),
+ Toolkit.i18nText("Fine-Design_Basic_Plugin_Warning"),
+ FineJOptionPane.OK_CANCEL_OPTION,
+ FineJOptionPane.INFORMATION_MESSAGE
);
- if (rv == FineJOptionPane.NO_OPTION || rv == FineJOptionPane.CANCEL_OPTION || rv == FineJOptionPane.CLOSED_OPTION) {
- return;
+ if (rv == FineJOptionPane.OK_OPTION) {
+ List pluginTasks = result.getPreTasks();
+ for(PluginTask pluginTask : pluginTasks){
+ PluginMarker marker = pluginTask.getMarker();
+ PluginOperateUtils.installPluginOnline(marker, jsCallback);
+ }
+ PluginManager.getController().install(zipFile, new InstallFromDiskCallback(zipFile, jsCallback));
}
- List pluginTasks = result.getPreTasks();
- for(PluginTask pluginTask : pluginTasks){
- PluginMarker marker = pluginTask.getMarker();
- PluginOperateUtils.installPluginOnline(marker, jsCallback);
- }
- PluginManager.getController().install(zipFile, new InstallFromDiskCallback(zipFile, jsCallback));
} else if(result.errorCode() == PluginErrorCode.HasLowerPluginWhenInstall){
- int rv = FineJOptionPane.showOptionDialog(
+ int rv = FineJOptionPane.showConfirmDialog(
null,
Toolkit.i18nText("Fine-Design_Basic_Plugin_Has_Install_Lower"),
Toolkit.i18nText("Fine-Design_Basic_Plugin_Warning"),
- FineJOptionPane.YES_NO_CANCEL_OPTION,
- FineJOptionPane.INFORMATION_MESSAGE,
- null,
- FineJOptionPane.OPTION_YES_NO_CANCEL,
- null
+ FineJOptionPane.OK_CANCEL_OPTION,
+ FineJOptionPane.INFORMATION_MESSAGE
);
- if (rv == FineJOptionPane.NO_OPTION || rv == FineJOptionPane.CANCEL_OPTION || rv == FineJOptionPane.CLOSED_OPTION) {
- return;
+ if (rv == FineJOptionPane.OK_OPTION) {
+ PluginOperateUtils.updatePluginFromDisk(zipFile, jsCallback);
}
- PluginOperateUtils.updatePluginFromDisk(zipFile, jsCallback);
}else {
jsCallback.execute("failed");
FineLoggerFactory.getLogger().info(Toolkit.i18nText("Fine-Design_Basic_Plugin_Install_Failed"));
diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/InstallOnlineCallback.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/InstallOnlineCallback.java
index c7059f50d..4c94a9f42 100644
--- a/designer-base/src/main/java/com/fr/design/extra/exe/callback/InstallOnlineCallback.java
+++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/InstallOnlineCallback.java
@@ -41,22 +41,20 @@ public class InstallOnlineCallback extends AbstractDealPreTaskCallback {
FineLoggerFactory.getLogger().info(successInfo);
FineJOptionPane.showMessageDialog(null, successInfo);
} else if(result.errorCode() == PluginErrorCode.HasLowerPluginWhenInstall){
- int rv = FineJOptionPane.showOptionDialog(
+ int rv = FineJOptionPane.showConfirmDialog(
null,
Toolkit.i18nText("Fine-Design_Basic_Plugin_Has_Install_Lower"),
Toolkit.i18nText("Fine-Design_Basic_Plugin_Warning"),
- FineJOptionPane.YES_NO_CANCEL_OPTION,
- FineJOptionPane.INFORMATION_MESSAGE,
- null,
- FineJOptionPane.OPTION_YES_NO_CANCEL,
- null
+ FineJOptionPane.OK_CANCEL_OPTION,
+ FineJOptionPane.INFORMATION_MESSAGE
);
- if (rv == FineJOptionPane.NO_OPTION || rv == FineJOptionPane.CANCEL_OPTION || rv == FineJOptionPane.CLOSED_OPTION) {
+ if (rv == FineJOptionPane.OK_OPTION) {
+ PluginMarker pluginMarker = result.getCurrentTask().getMarker();
+ PluginOperateUtils.updatePluginOnline(pluginMarker, jsCallback);
+ }
+ else {
jsCallback.execute("success");
- return;
}
- PluginMarker pluginMarker = result.getCurrentTask().getMarker();
- PluginOperateUtils.updatePluginOnline(pluginMarker, jsCallback);
} else {
jsCallback.execute("failed");
FineLoggerFactory.getLogger().info(Toolkit.i18nText("Fine-Design_Basic_Plugin_Install_Failed"));
diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/UninstallPluginCallback.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/UninstallPluginCallback.java
index df3839427..6fba685d7 100644
--- a/designer-base/src/main/java/com/fr/design/extra/exe/callback/UninstallPluginCallback.java
+++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/UninstallPluginCallback.java
@@ -31,20 +31,16 @@ public class UninstallPluginCallback extends AbstractPluginTaskCallback {
FineLoggerFactory.getLogger().info(successInfo);
FineJOptionPane.showMessageDialog(null, successInfo);
}else if (result.errorCode() == PluginErrorCode.NeedUninstallDependingPluginFirst) {
- int rv = FineJOptionPane.showOptionDialog(
+ int rv = FineJOptionPane.showConfirmDialog(
null,
Toolkit.i18nText("Fine-Design_Basic_Plugin_Delete_Dependence"),
Toolkit.i18nText("Fine-Design_Basic_Plugin_Warning"),
- FineJOptionPane.YES_NO_CANCEL_OPTION,
- FineJOptionPane.INFORMATION_MESSAGE,
- null,
- FineJOptionPane.OPTION_YES_NO_CANCEL,
- null
+ FineJOptionPane.OK_CANCEL_OPTION,
+ FineJOptionPane.INFORMATION_MESSAGE
);
- if (rv == FineJOptionPane.CANCEL_OPTION || rv == FineJOptionPane.CLOSED_OPTION) {
- return;
+ if (rv == FineJOptionPane.OK_OPTION) {
+ PluginManager.getController().uninstall(pluginMarker, true, new UninstallPluginCallback(pluginMarker, jsCallback));
}
- PluginManager.getController().uninstall(pluginMarker, true, new UninstallPluginCallback(pluginMarker, jsCallback));
} else {
jsCallback.execute("failed");
FineLoggerFactory.getLogger().info(Toolkit.i18nText("Fine-Design_Basic_Plugin_Delete_Failed"));
diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java
index e5396d35c..21c7871f5 100644
--- a/designer-base/src/main/java/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java
+++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java
@@ -43,40 +43,32 @@ public class UpdateFromDiskCallback extends AbstractPluginTaskCallback {
FineLoggerFactory.getLogger().info(successInfo);
FineJOptionPane.showMessageDialog(null, successInfo);
} else if (result.errorCode() == PluginErrorCode.NeedDealWithPluginDependency) {
- int rv = FineJOptionPane.showOptionDialog(
+ int rv = FineJOptionPane.showConfirmDialog(
null,
Toolkit.i18nText("Fine-Design_Basic_Plugin_Update_Dependence"),
Toolkit.i18nText("Fine-Design_Basic_Plugin_Warning"),
- FineJOptionPane.YES_NO_CANCEL_OPTION,
- FineJOptionPane.INFORMATION_MESSAGE,
- null,
- FineJOptionPane.OPTION_YES_NO_CANCEL,
- null
+ FineJOptionPane.OK_CANCEL_OPTION,
+ FineJOptionPane.INFORMATION_MESSAGE
);
- if (rv == FineJOptionPane.NO_OPTION || rv == FineJOptionPane.CANCEL_OPTION || rv == FineJOptionPane.CLOSED_OPTION) {
- return;
- }
- List pluginTasks = result.getPreTasks();
- for(PluginTask pluginTask : pluginTasks){
- PluginMarker marker = pluginTask.getMarker();
- PluginOperateUtils.updatePluginOnline(marker, jsCallback);
+ if (rv == FineJOptionPane.OK_OPTION) {
+ List pluginTasks = result.getPreTasks();
+ for(PluginTask pluginTask : pluginTasks){
+ PluginMarker marker = pluginTask.getMarker();
+ PluginOperateUtils.updatePluginOnline(marker, jsCallback);
+ }
+ PluginManager.getController().update(zipFile, new UpdateFromDiskCallback(zipFile, jsCallback));
}
- PluginManager.getController().update(zipFile, new UpdateFromDiskCallback(zipFile, jsCallback));
} else if(result.errorCode() == PluginErrorCode.NoPluginToUpdate){
- int rv = FineJOptionPane.showOptionDialog(
+ int rv = FineJOptionPane.showConfirmDialog(
null,
Toolkit.i18nText("Fine-Design_Basic_Plugin_No_Plugin_Update"),
Toolkit.i18nText("Fine-Design_Basic_Plugin_Warning"),
- FineJOptionPane.YES_NO_CANCEL_OPTION,
- FineJOptionPane.INFORMATION_MESSAGE,
- null,
- FineJOptionPane.OPTION_YES_NO_CANCEL,
- null
+ FineJOptionPane.OK_CANCEL_OPTION,
+ FineJOptionPane.INFORMATION_MESSAGE
);
- if (rv == FineJOptionPane.NO_OPTION || rv == FineJOptionPane.CANCEL_OPTION || rv == FineJOptionPane.CLOSED_OPTION) {
- return;
+ if (rv == FineJOptionPane.OK_OPTION) {
+ PluginOperateUtils.installPluginFromDisk(zipFile, jsCallback);
}
- PluginOperateUtils.installPluginFromDisk(zipFile, jsCallback);
}else {
jsCallback.execute("failed");
FineLoggerFactory.getLogger().info(Toolkit.i18nText("Fine-Design_Basic_Plugin_Update_Failed"));
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/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/ibutton/UILockButton.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java
new file mode 100644
index 000000000..77b5516f5
--- /dev/null
+++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UILockButton.java
@@ -0,0 +1,55 @@
+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.report.LockItem;
+
+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;
+ init();
+ }
+
+ private void init() {
+ boolean locked = EditLockUtils.isLocked(LockItem.CONNECTION);
+ this.setIcon(locked ? lockedIcon : normalIcon);
+ this.setToolTipText(locked ? lockedTooltips : 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/icontainer/UIModeControlContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java
index a589b0c87..1837711cd 100644
--- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java
+++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java
@@ -167,6 +167,9 @@ public class UIModeControlContainer extends JLayeredPane {
// 拖动的距离,为正值表示往下拖动,为负值表示往上拖动
int deltaY = e.getY();
toolPaneY += deltaY;
+ if (toolPaneY < 0) {
+ toolPaneY = 0;
+ }
onResize(toolPaneY);
refreshContainer();
}
@@ -241,7 +244,7 @@ public class UIModeControlContainer extends JLayeredPane {
};
protected void onModeChanged() {
- //do nothing here
+ //do nothing here
}
/**
@@ -312,7 +315,7 @@ public class UIModeControlContainer extends JLayeredPane {
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
- // do nothing
+ // do nothing
}
});
}
@@ -337,7 +340,7 @@ public class UIModeControlContainer extends JLayeredPane {
@Override
public void layoutContainer(Container parent) {
- // do nothing
+ // do nothing
}
@Override
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..c609e5d5c
--- /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.report.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/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..84ac5fbcb
--- /dev/null
+++ b/designer-base/src/main/java/com/fr/design/gui/ispinner/chart/UISpinnerWithUnit.java
@@ -0,0 +1,26 @@
+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);
+ }
+}
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-base/src/main/java/com/fr/design/gui/style/FormatPane.java b/designer-base/src/main/java/com/fr/design/gui/style/FormatPane.java
index 0b33b7adf..ba68ab36f 100644
--- a/designer-base/src/main/java/com/fr/design/gui/style/FormatPane.java
+++ b/designer-base/src/main/java/com/fr/design/gui/style/FormatPane.java
@@ -6,6 +6,7 @@ import com.fr.base.Style;
import com.fr.base.TextFormat;
import com.fr.data.core.FormatField;
import com.fr.data.core.FormatField.FormatContents;
+import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.i18n.Toolkit;
import com.fr.design.border.UIRoundedBorder;
@@ -469,6 +470,11 @@ public class FormatPane extends AbstractBasicStylePane implements GlobalNameObse
globalNameListener = listener;
}
+ public void registerChangeListener(UIObserverListener listener) {
+ typeComboBox.registerChangeListener(listener);
+ textField.registerChangeListener(listener);
+ }
+
@Override
public boolean shouldResponseNameListener() {
return false;
diff --git a/designer-base/src/main/java/com/fr/design/locale/impl/BbsRegisterMark.java b/designer-base/src/main/java/com/fr/design/locale/impl/BbsRegisterMark.java
new file mode 100644
index 000000000..d5afe26db
--- /dev/null
+++ b/designer-base/src/main/java/com/fr/design/locale/impl/BbsRegisterMark.java
@@ -0,0 +1,38 @@
+package com.fr.design.locale.impl;
+
+import com.fr.general.CloudCenter;
+import com.fr.general.GeneralContext;
+import com.fr.general.locale.LocaleMark;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * @author hades
+ * @version 10.0
+ * Created by hades on 2021/1/29
+ */
+public class BbsRegisterMark implements LocaleMark {
+
+ private final Map map = new HashMap<>();
+ private static final String BBS_REGISTER_CN = CloudCenter.getInstance().acquireUrlByKind("bbs.register");
+ private static final String BBS_REGISTER_TW = CloudCenter.getInstance().acquireUrlByKind("bbs.register");
+ private static final String BBS_REGISTER_EN = CloudCenter.getInstance().acquireUrlByKind("bbs.register.en_US");
+ private static final String BBS_REGISTER_KR = CloudCenter.getInstance().acquireUrlByKind("bbs.register.en_US");
+ private static final String BBS_REGISTER_JP = CloudCenter.getInstance().acquireUrlByKind("bbs.register.en_US");
+
+ public BbsRegisterMark() {
+ map.put(Locale.CHINA, BBS_REGISTER_CN);
+ map.put(Locale.KOREA, BBS_REGISTER_KR);
+ map.put(Locale.JAPAN, BBS_REGISTER_JP);
+ map.put(Locale.US, BBS_REGISTER_EN);
+ map.put(Locale.TAIWAN, BBS_REGISTER_TW);
+ }
+
+ @Override
+ public String getValue() {
+ String result = map.get(GeneralContext.getLocale());
+ return result == null ? BBS_REGISTER_EN : result;
+ }
+}
diff --git a/designer-base/src/main/java/com/fr/design/locale/impl/BbsResetMark.java b/designer-base/src/main/java/com/fr/design/locale/impl/BbsResetMark.java
new file mode 100644
index 000000000..4573aac3a
--- /dev/null
+++ b/designer-base/src/main/java/com/fr/design/locale/impl/BbsResetMark.java
@@ -0,0 +1,38 @@
+package com.fr.design.locale.impl;
+
+import com.fr.general.CloudCenter;
+import com.fr.general.GeneralContext;
+import com.fr.general.locale.LocaleMark;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * @author hades
+ * @version 10.0
+ * Created by hades on 2021/1/29
+ */
+public class BbsResetMark implements LocaleMark {
+
+ private final Map map = new HashMap<>();
+ private static final String BBS_RESET_CN = CloudCenter.getInstance().acquireUrlByKind("bbs.reset");
+ private static final String BBS_RESET_TW = CloudCenter.getInstance().acquireUrlByKind("bbs.reset");
+ private static final String BBS_RESET_EN = CloudCenter.getInstance().acquireUrlByKind("bbs.reset.en_US");
+ private static final String BBS_RESET_KR = CloudCenter.getInstance().acquireUrlByKind("bbs.reset.en_US");
+ private static final String BBS_RESET_JP = CloudCenter.getInstance().acquireUrlByKind("bbs.reset.en_US");
+
+ public BbsResetMark() {
+ map.put(Locale.CHINA, BBS_RESET_CN);
+ map.put(Locale.KOREA, BBS_RESET_KR);
+ map.put(Locale.JAPAN, BBS_RESET_JP);
+ map.put(Locale.US, BBS_RESET_EN);
+ map.put(Locale.TAIWAN, BBS_RESET_TW);
+ }
+
+ @Override
+ public String getValue() {
+ String result = map.get(GeneralContext.getLocale());
+ return result == null ? BBS_RESET_EN : result;
+ }
+}
diff --git a/designer-base/src/main/java/com/fr/design/locale/impl/BbsSpaceMark.java b/designer-base/src/main/java/com/fr/design/locale/impl/BbsSpaceMark.java
new file mode 100644
index 000000000..2303dc250
--- /dev/null
+++ b/designer-base/src/main/java/com/fr/design/locale/impl/BbsSpaceMark.java
@@ -0,0 +1,39 @@
+package com.fr.design.locale.impl;
+
+import com.fr.general.CloudCenter;
+import com.fr.general.GeneralContext;
+import com.fr.general.locale.LocaleMark;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * @author hades
+ * @version 10.0
+ * Created by hades on 2021/1/29
+ */
+public class BbsSpaceMark implements LocaleMark {
+
+ private final Map map = new HashMap<>();
+ private static final String BBS_SPACE_CN = CloudCenter.getInstance().acquireUrlByKind("bbs.default");
+ private static final String BBS_SPACE_TW = CloudCenter.getInstance().acquireUrlByKind("bbs.default");
+ private static final String BBS_SPACE_EN = CloudCenter.getInstance().acquireUrlByKind("bbs.default.en_US");
+ private static final String BBS_SPACE_KR = CloudCenter.getInstance().acquireUrlByKind("bbs.default.en_US");
+ private static final String BBS_SPACE_JP = CloudCenter.getInstance().acquireUrlByKind("bbs.default.en_US");
+
+ public BbsSpaceMark() {
+ map.put(Locale.CHINA, BBS_SPACE_CN);
+ map.put(Locale.KOREA, BBS_SPACE_KR);
+ map.put(Locale.JAPAN, BBS_SPACE_JP);
+ map.put(Locale.US, BBS_SPACE_EN);
+ map.put(Locale.TAIWAN, BBS_SPACE_TW);
+ }
+
+ @Override
+ public String getValue() {
+ String result = map.get(GeneralContext.getLocale());
+ return result == null ? BBS_SPACE_EN : result;
+ }
+
+}
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/os/impl/DatabaseDialogAction.java b/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java
index acd906897..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
@@ -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.report.LockItem;
import static com.fr.design.actions.server.ConnectionListAction.doWithDatasourceManager;
/**
@@ -68,9 +67,18 @@ public class DatabaseDialogAction implements OSBasedAction {
@Override
public void afterCommit() {
DesignerContext.getDesignerBean("databasename").refreshBeanElement();
+ // 定义数据连接弹窗关闭后,解锁
+ EditLockUtils.unlock(LockItem.CONNECTION);
}
}));
}
+
+ @Override
+ public void doCancel() {
+ super.doCancel();
+ // 定义数据连接弹窗关闭后,解锁
+ EditLockUtils.unlock(LockItem.CONNECTION);
+ }
});
databaseListDialog.setVisible(true);
}
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/style/color/ColorAdjustPane.java b/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java
index 909501857..fcdc594b5 100644
--- a/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java
+++ b/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java
@@ -206,6 +206,10 @@ public class ColorAdjustPane extends JPanel implements UIObserver {
public void setVisible(boolean b) {
super.setVisible(b);
}
+
+ protected boolean selectRealTime() {
+ return false;
+ }
};
colorPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
diff --git a/designer-base/src/main/java/com/fr/design/style/color/ColorSelectPane.java b/designer-base/src/main/java/com/fr/design/style/color/ColorSelectPane.java
index c82eac0c0..68c1b2b99 100644
--- a/designer-base/src/main/java/com/fr/design/style/color/ColorSelectPane.java
+++ b/designer-base/src/main/java/com/fr/design/style/color/ColorSelectPane.java
@@ -115,12 +115,16 @@ public class ColorSelectPane extends TransparentPane implements ColorSelectable
row1Pane.setPreferredSize(new Dimension(135, 24)); // 宽度为 16 * 8 + 7
// 最近使用
- UsedColorPane usedColorPane = new UsedColorPane(1, 8, 1, this, true, true);
+ UsedColorPane usedColorPane = new UsedColorPane(1, 8, 1, this, true, selectRealTime());
usedColorPane.getPane().setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 8));
row1Pane.add(usedColorPane.getPane());
return row1Pane;
}
+ protected boolean selectRealTime() {
+ return true;
+ }
+
protected Color[] getColorArray() {
return ColorFactory.MenuColors;
}
diff --git a/designer-base/src/main/java/com/fr/design/ui/Assistant.java b/designer-base/src/main/java/com/fr/design/ui/Assistant.java
index 3962692c7..7e9430672 100644
--- a/designer-base/src/main/java/com/fr/design/ui/Assistant.java
+++ b/designer-base/src/main/java/com/fr/design/ui/Assistant.java
@@ -6,14 +6,12 @@ import com.teamdev.jxbrowser.chromium.BrowserContext;
import com.teamdev.jxbrowser.chromium.ProtocolService;
import com.teamdev.jxbrowser.chromium.URLResponse;
-import javax.activation.MimetypesFileTypeMap;
import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.Paths;
/**
* @author richie
@@ -50,6 +48,19 @@ public class Assistant {
if (path.endsWith(".svg")) {
return "image/svg+xml";
}
+ if (path.endsWith(".png")) {
+ return "image/png";
+ }
+ if (path.endsWith(".woff")) {
+ return "font/woff";
+ }
+ if (path.endsWith(".ttf")) {
+ return "truetype";
+ }
+ if (path.endsWith(".eot")) {
+ return "embedded-opentype";
+ }
+
Path file = new File(path).toPath();
try {
return Files.probeContentType(file);
diff --git a/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java b/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java
index 46bb11b3c..0c25281d5 100644
--- a/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java
+++ b/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java
@@ -16,6 +16,9 @@ import com.fr.design.extra.exe.PluginLoginExecutor;
import com.fr.design.extra.exe.ReadUpdateOnlineExecutor;
import com.fr.design.extra.exe.SearchOnlineExecutor;
import com.fr.design.i18n.Toolkit;
+import com.fr.design.locale.impl.BbsRegisterMark;
+import com.fr.design.locale.impl.BbsResetMark;
+import com.fr.design.locale.impl.BbsSpaceMark;
import com.fr.design.upm.event.CertificateEvent;
import com.fr.design.upm.event.DownloadEvent;
import com.fr.design.upm.exec.UpmBrowserExecutor;
@@ -23,6 +26,8 @@ import com.fr.design.upm.task.UpmTaskWorker;
import com.fr.event.EventDispatcher;
import com.fr.general.CloudCenter;
import com.fr.general.GeneralUtils;
+import com.fr.general.locale.LocaleCenter;
+import com.fr.general.locale.LocaleMark;
import com.fr.json.JSONObject;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.context.PluginMarker;
@@ -424,8 +429,8 @@ public class UpmBridge {
@JSBridge
public void getPriviteMessage() {
try {
- String loginUrl = CloudCenter.getInstance().acquireUrlByKind("bbs.default");
- Desktop.getDesktop().browse(new URI(loginUrl));
+ LocaleMark spaceMark = LocaleCenter.getMark(BbsSpaceMark.class);
+ Desktop.getDesktop().browse(new URI(spaceMark.getValue()));
} catch (Exception exp) {
FineLoggerFactory.getLogger().info(exp.getMessage());
}
@@ -437,7 +442,8 @@ public class UpmBridge {
@JSBridge
public void forgetHref() {
try {
- Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("bbs.reset")));
+ LocaleMark resetMark = LocaleCenter.getMark(BbsResetMark.class);
+ Desktop.getDesktop().browse(new URI(resetMark.getValue()));
} catch (Exception e) {
FineLoggerFactory.getLogger().info(e.getMessage());
}
@@ -449,7 +455,8 @@ public class UpmBridge {
@JSBridge
public void registerHref() {
try {
- Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("bbs.register")));
+ LocaleMark registerMark = LocaleCenter.getMark(BbsRegisterMark.class);
+ Desktop.getDesktop().browse(new URI(registerMark.getValue()));
} catch (Exception e) {
FineLoggerFactory.getLogger().info(e.getMessage());
}
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..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
@@ -4,19 +4,21 @@ 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;
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;
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;
@@ -35,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();
@@ -58,6 +60,10 @@ public class DesignerPort implements XMLReadable, XMLWriter {
private int debugMessagePort = 51463;
public int getMessagePort() {
+ int extraMessagePort = DesignerPortContext.getMessagePort();
+ if (extraMessagePort >= MIN_PORT && extraMessagePort <= MAX_PORT) {
+ return extraMessagePort;
+ }
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-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 @@
+
+
\ 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 @@
+
+
\ No newline at end of file
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 000000000..41c7c703a
Binary files /dev/null and b/designer-base/src/main/resources/com/fr/design/images/m_web/warningIcon.png differ
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();
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 extends BasicBeanPane {
private void populateMatchData(Object[] columnData) {
Set geoAreas = matchAreaTable.getItems();
- Map resultMap = ChartGEOJSONHelper.matchAreaList(columnData, geoAreas, matchResultTable.getCustomResult());
+ Map resultMap = GEOMatchHelper.getInstance().matchAreaList(columnData, geoAreas, matchResultTable.getCustomResult());
Object[][] data = new Object[resultMap.size()][2];
diff --git a/designer-chart/src/main/java/com/fr/design/chartx/component/MatchAreaTable.java b/designer-chart/src/main/java/com/fr/design/chartx/component/MatchAreaTable.java
index 9dd13e77f..cde622464 100644
--- a/designer-chart/src/main/java/com/fr/design/chartx/component/MatchAreaTable.java
+++ b/designer-chart/src/main/java/com/fr/design/chartx/component/MatchAreaTable.java
@@ -1,8 +1,8 @@
package com.fr.design.chartx.component;
+import com.fr.decision.webservice.v10.map.geojson.helper.GEOMatchHelper;
import com.fr.design.i18n.Toolkit;
import com.fr.general.GeneralUtils;
-import com.fr.plugin.chart.map.server.ChartGEOJSONHelper;
import javax.swing.AbstractCellEditor;
import javax.swing.JTable;
@@ -88,7 +88,7 @@ public class MatchAreaTable extends JTable {
return;
}
int index = areaNameIndex.get(areaName);
- String result = ChartGEOJSONHelper.matchArea(GeneralUtils.objectToString(areaName), items);
+ String result = GEOMatchHelper.getInstance().matchArea(GeneralUtils.objectToString(areaName), items, new HashMap<>());
getColumnModel().getColumn(1).getCellEditor().stopCellEditing();
this.setValueAt(result, index, 1);
}
diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartOtherPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartOtherPane.java
index 9b494a1a4..4bc363306 100644
--- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartOtherPane.java
+++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartOtherPane.java
@@ -13,6 +13,7 @@ import com.fr.design.mainframe.chart.gui.other.ChartConditionAttrPane;
import com.fr.design.mainframe.chart.gui.other.ChartInteractivePane;
import com.fr.design.mainframe.chart.gui.type.ChartTabPane;
import com.fr.design.mainframe.chart.info.ChartInfoCollector;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorPane;
import javax.swing.JPanel;
import java.util.ArrayList;
@@ -76,11 +77,11 @@ public class ChartOtherPane extends AbstractChartAttrPane {
public String title4PopupWindow() {
return PaneTitleConstants.CHART_OTHER_TITLE;
}
-
+
private boolean isHaveCondition() {
return hasCondition;
}
-
+
/**
* 设置选中的界面id
*/
@@ -110,6 +111,7 @@ public class ChartOtherPane extends AbstractChartAttrPane {
public void populateBean(Chart chart) {
interactivePane.populateBean(chart);
if (ChartOtherPane.this.isHaveCondition()) {
+ VanChartRichEditorPane.refreshCommonChartFieldNames(chart);
conditionAttrPane.populateBean(chart);
}
}
@@ -126,7 +128,7 @@ public class ChartOtherPane extends AbstractChartAttrPane {
//特效埋点
ChartInfoCollector.getInstance().updateChartConfig(chart, ConfigType.EFFECT, chart.getBuryingPointEffectConfig());
}
-
+
/**
* 注册 切换按钮的切换事件.
* @param currentChartEditPane 当前编辑的图表编辑界面.
diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/CalculateComboBox.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/CalculateComboBox.java
index f66b0fb01..a1ad22312 100644
--- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/CalculateComboBox.java
+++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/CalculateComboBox.java
@@ -8,61 +8,65 @@ import com.fr.data.util.function.MinFunction;
import com.fr.data.util.function.NoneFunction;
import com.fr.data.util.function.SumFunction;
import com.fr.design.gui.icombobox.UIComboBox;
+import com.fr.design.i18n.Toolkit;
import com.fr.general.ComparatorUtils;
import com.fr.log.FineLoggerFactory;
+import com.fr.plugin.chart.base.FirstFunction;
/**
* 公式选择.
-* @author kunsnat E-mail:kunsnat@gmail.com
-* @version 创建时间:2013-1-8 上午09:52:15
+ *
+ * @author kunsnat E-mail:kunsnat@gmail.com
+ * @version 创建时间:2013-1-8 上午09:52:15
*/
-public class CalculateComboBox extends UIComboBox{
+public class CalculateComboBox extends UIComboBox {
- public static final String[] CALCULATE_ARRAY = {com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Data_Function_None"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Data_Function_Sum"),
- com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Data_Function_Average"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Data_Function_Max"),
- com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Data_Function_Min"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Data_Function_Count")};
- public static final Class[] CLASS_ARRAY = {NoneFunction.class, SumFunction.class, AverageFunction.class,
- MaxFunction.class, MinFunction.class, CountFunction.class};
-
- public CalculateComboBox() {
- super(CALCULATE_ARRAY);
- setSelectedIndex(0);
- }
-
- public void reset() {
- this.setSelectedItem(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Data_Function_None"));
- }
-
- /**
- * 更新公式选择.
- */
- public void populateBean(AbstractDataFunction function) {
- for(int i = 0; i < CLASS_ARRAY.length; i++) {
- if(function != null && ComparatorUtils.equals(function.getClass(), CLASS_ARRAY[i])) {
- setSelectedIndex(i);
- break;
- }
- }
- }
-
- /**
- * 返回当前选择的公式
- */
- public AbstractDataFunction updateBean() {
- try {
- int selectIndex = getSelectedIndex();
- if(selectIndex >= 0 && selectIndex < CLASS_ARRAY.length) {
- return (AbstractDataFunction)CLASS_ARRAY[selectIndex].newInstance();
- }
- } catch (InstantiationException e) {
- FineLoggerFactory.getLogger().error("Function Error");
- return null;
- } catch (IllegalAccessException e) {
- FineLoggerFactory.getLogger().error("Function Error");
- return null;
- }
-
- return null;
- }
+ public static final String[] CALCULATE_ARRAY = {Toolkit.i18nText("Fine-Design_Chart_Data_Function_First"), Toolkit.i18nText("Fine-Design_Chart_Data_Function_Last"),
+ Toolkit.i18nText("Fine-Design_Chart_Data_Function_Sum"), Toolkit.i18nText("Fine-Design_Chart_Data_Function_Average"),
+ Toolkit.i18nText("Fine-Design_Chart_Data_Function_Max"), Toolkit.i18nText("Fine-Design_Chart_Data_Function_Min"),
+ Toolkit.i18nText("Fine-Design_Chart_Data_Function_Count")};
+ public static final Class[] CLASS_ARRAY = {FirstFunction.class, NoneFunction.class, SumFunction.class, AverageFunction.class,
+ MaxFunction.class, MinFunction.class, CountFunction.class};
+
+ public CalculateComboBox() {
+ super(CALCULATE_ARRAY);
+ setSelectedIndex(2);
+ }
+
+ public void reset() {
+ this.setSelectedItem(Toolkit.i18nText("Fine-Design_Chart_Data_Function_Sum"));
+ }
+
+ /**
+ * 更新公式选择.
+ */
+ public void populateBean(AbstractDataFunction function) {
+ for (int i = 0; i < CLASS_ARRAY.length; i++) {
+ if (function != null && ComparatorUtils.equals(function.getClass(), CLASS_ARRAY[i])) {
+ setSelectedIndex(i);
+ break;
+ }
+ }
+ }
+
+ /**
+ * 返回当前选择的公式
+ */
+ public AbstractDataFunction updateBean() {
+ try {
+ int selectIndex = getSelectedIndex();
+ if (selectIndex >= 0 && selectIndex < CLASS_ARRAY.length) {
+ return (AbstractDataFunction) CLASS_ARRAY[selectIndex].newInstance();
+ }
+ } catch (InstantiationException e) {
+ FineLoggerFactory.getLogger().error("Function Error");
+ return null;
+ } catch (IllegalAccessException e) {
+ FineLoggerFactory.getLogger().error("Function Error");
+ return null;
+ }
+
+ return null;
+ }
}
\ No newline at end of file
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();
diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java
index 3f5f70aae..9783c0577 100644
--- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java
+++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldNamePane.java
@@ -70,7 +70,7 @@ public class SeriesNameUseFieldNamePane extends FurtherBasicBeanPane {
};
}
};
- 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/box/VanChartBoxRichTextDetailedFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxRichTextDetailedFieldListPane.java
new file mode 100644
index 000000000..d780a44eb
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxRichTextDetailedFieldListPane.java
@@ -0,0 +1,135 @@
+package com.fr.van.chart.box;
+
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.AttrTooltipContent;
+import com.fr.plugin.chart.base.format.AttrTooltipCategoryFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipDataMaxFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipDataMedianFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipDataMinFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipDataNumberFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipDataOutlierFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipDataQ1Format;
+import com.fr.plugin.chart.base.format.AttrTooltipDataQ3Format;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.box.attr.AttrBoxTooltipContent;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListener;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+import javax.swing.JPanel;
+import java.util.ArrayList;
+import java.util.List;
+
+public class VanChartBoxRichTextDetailedFieldListPane extends VanChartFieldListPane {
+
+ private VanChartFieldButton richTextNumber;
+ private VanChartFieldButton richTextMax;
+ private VanChartFieldButton richTextQ3;
+ private VanChartFieldButton richTextMedian;
+ private VanChartFieldButton richTextQ1;
+ private VanChartFieldButton richTextMin;
+ private VanChartFieldButton richTextOutlier;
+
+ public VanChartBoxRichTextDetailedFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ public VanChartFieldButton getRichTextMax() {
+ return richTextMax;
+ }
+
+ public VanChartFieldButton getRichTextQ3() {
+ return richTextQ3;
+ }
+
+ public VanChartFieldButton getRichTextMedian() {
+ return richTextMedian;
+ }
+
+ public VanChartFieldButton getRichTextQ1() {
+ return richTextQ1;
+ }
+
+ public VanChartFieldButton getRichTextMin() {
+ return richTextMin;
+ }
+
+ protected void initDefaultFieldButton() {
+ VanChartFieldListener listener = getFieldListener();
+
+ setCategoryNameButton(new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Category_Use_Name"), new AttrTooltipCategoryFormat(), listener));
+ setSeriesNameButton(new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Series_Name"), new AttrTooltipSeriesFormat(), listener));
+
+ richTextNumber = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Data_Number"), new AttrTooltipDataNumberFormat(), listener);
+ richTextMax = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Max_Value"), new AttrTooltipDataMaxFormat(), listener);
+ richTextQ3 = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Data_Q3"), new AttrTooltipDataQ3Format(), listener);
+ richTextMedian = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Data_Median"), new AttrTooltipDataMedianFormat(), listener);
+ richTextQ1 = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Data_Q1"), new AttrTooltipDataQ1Format(), listener);
+ richTextMin = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Min_Value"), new AttrTooltipDataMinFormat(), listener);
+ richTextOutlier = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Outlier_Value"), new AttrTooltipDataOutlierFormat(), listener);
+ }
+
+ protected void addDefaultFieldButton(JPanel fieldPane) {
+ fieldPane.add(getCategoryNameButton());
+ fieldPane.add(getSeriesNameButton());
+ fieldPane.add(richTextNumber);
+ fieldPane.add(richTextMax);
+ fieldPane.add(richTextQ3);
+ fieldPane.add(richTextMedian);
+ fieldPane.add(richTextQ1);
+ fieldPane.add(richTextMin);
+ fieldPane.add(richTextOutlier);
+ }
+
+ protected List getDefaultFieldButtonList() {
+ List fieldButtonList = new ArrayList<>();
+
+ fieldButtonList.add(getCategoryNameButton());
+ fieldButtonList.add(getSeriesNameButton());
+ fieldButtonList.add(richTextNumber);
+ fieldButtonList.add(richTextMax);
+ fieldButtonList.add(richTextQ3);
+ fieldButtonList.add(richTextMedian);
+ fieldButtonList.add(richTextQ1);
+ fieldButtonList.add(richTextMin);
+ fieldButtonList.add(richTextOutlier);
+
+ return fieldButtonList;
+ }
+
+ public void populateDefaultField(AttrTooltipContent tooltipContent) {
+ super.populateDefaultField(tooltipContent);
+
+ if (tooltipContent instanceof AttrBoxTooltipContent) {
+ AttrBoxTooltipContent box = (AttrBoxTooltipContent) tooltipContent;
+
+ populateButtonFormat(richTextNumber, box.getRichTextNumber());
+ populateButtonFormat(richTextMax, box.getRichTextMax());
+ populateButtonFormat(richTextQ3, box.getRichTextQ3());
+ populateButtonFormat(richTextMedian, box.getRichTextMedian());
+ populateButtonFormat(richTextQ1, box.getRichTextQ1());
+ populateButtonFormat(richTextMin, box.getRichTextMin());
+ populateButtonFormat(richTextOutlier, box.getRichTextOutlier());
+ }
+ }
+
+ public void updateDefaultField(AttrTooltipContent tooltipContent) {
+ super.updateDefaultField(tooltipContent);
+
+ if (tooltipContent instanceof AttrBoxTooltipContent) {
+ AttrBoxTooltipContent box = (AttrBoxTooltipContent) tooltipContent;
+
+ updateButtonFormat(richTextNumber, box.getRichTextNumber());
+ updateButtonFormat(richTextMax, box.getRichTextMax());
+ updateButtonFormat(richTextQ3, box.getRichTextQ3());
+ updateButtonFormat(richTextMedian, box.getRichTextMedian());
+ updateButtonFormat(richTextQ1, box.getRichTextQ1());
+ updateButtonFormat(richTextMin, box.getRichTextMin());
+ updateButtonFormat(richTextOutlier, box.getRichTextOutlier());
+ }
+ }
+
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxRichTextResultFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxRichTextResultFieldListPane.java
new file mode 100644
index 000000000..9816967ff
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxRichTextResultFieldListPane.java
@@ -0,0 +1,41 @@
+package com.fr.van.chart.box;
+
+import com.fr.design.ui.ModernUIPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+import javax.swing.JPanel;
+import java.util.ArrayList;
+import java.util.List;
+
+public class VanChartBoxRichTextResultFieldListPane extends VanChartBoxRichTextDetailedFieldListPane {
+
+ public VanChartBoxRichTextResultFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void addDefaultFieldButton(JPanel fieldPane) {
+ fieldPane.add(getCategoryNameButton());
+ fieldPane.add(getSeriesNameButton());
+ fieldPane.add(getRichTextMax());
+ fieldPane.add(getRichTextQ3());
+ fieldPane.add(getRichTextMedian());
+ fieldPane.add(getRichTextQ1());
+ fieldPane.add(getRichTextMin());
+ }
+
+ protected List getDefaultFieldButtonList() {
+ List fieldButtonList = new ArrayList<>();
+
+ fieldButtonList.add(getCategoryNameButton());
+ fieldButtonList.add(getSeriesNameButton());
+ fieldButtonList.add(getRichTextMax());
+ fieldButtonList.add(getRichTextQ3());
+ fieldButtonList.add(getRichTextMedian());
+ fieldButtonList.add(getRichTextQ1());
+ fieldButtonList.add(getRichTextMin());
+
+ return fieldButtonList;
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxTooltipContentPane.java
index 25eb587d8..4e7a657d6 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxTooltipContentPane.java
@@ -4,8 +4,8 @@ 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.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
-import com.fr.plugin.chart.base.AttrTooltipRichText;
import com.fr.plugin.chart.base.format.AttrTooltipCategoryFormat;
import com.fr.plugin.chart.base.format.AttrTooltipDataMaxFormat;
import com.fr.plugin.chart.base.format.AttrTooltipDataMedianFormat;
@@ -20,17 +20,17 @@ import com.fr.plugin.chart.box.attr.AttrBoxTooltipContent;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
-import java.util.Map;
public class VanChartBoxTooltipContentPane extends VanChartTooltipContentPane {
@@ -44,20 +44,9 @@ public class VanChartBoxTooltipContentPane extends VanChartTooltipContentPane {
private VanChartFormatPaneWithCheckBox min;
private VanChartFormatPaneWithCheckBox outlier;
- private VanChartFormatPaneWithoutCheckBox richTextNumber;
- private VanChartFormatPaneWithoutCheckBox richTextMax;
- private VanChartFormatPaneWithoutCheckBox richTextQ3;
- private VanChartFormatPaneWithoutCheckBox richTextMedian;
- private VanChartFormatPaneWithoutCheckBox richTextQ1;
- private VanChartFormatPaneWithoutCheckBox richTextMin;
- private VanChartFormatPaneWithoutCheckBox richTextOutlier;
-
private JPanel dataNumberPane;
private JPanel dataOutlierPane;
- private JPanel richTextNumberPane;
- private JPanel richTextOutlierPane;
-
public VanChartBoxTooltipContentPane(VanChartStylePane parent, JPanel showOnPane, boolean isDetailed) {
super(parent, showOnPane);
checkFormatVisible(isDetailed);
@@ -104,47 +93,6 @@ public class VanChartBoxTooltipContentPane extends VanChartTooltipContentPane {
};
}
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- setRichTextCategoryNameFormatPane(new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextSeriesNameFormatPane(new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane));
-
- richTextNumber = new VanChartFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Data_Number");
- }
- };
- richTextMax = new VanChartFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Max_Value");
- }
- };
- richTextQ3 = new VanChartFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Data_Q3");
- }
- };
- richTextMedian = new VanChartFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Data_Median");
- }
- };
- richTextQ1 = new VanChartFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Data_Q1");
- }
- };
- richTextMin = new VanChartFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Min_Value");
- }
- };
- richTextOutlier = new VanChartFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Outlier_Value");
- }
- };
- }
-
protected JPanel createCommonFormatPanel() {
JPanel commonPanel = new JPanel(new BorderLayout());
@@ -155,27 +103,73 @@ public class VanChartBoxTooltipContentPane extends VanChartTooltipContentPane {
return commonPanel;
}
- protected JPanel createRichFormatPanel() {
- JPanel richFormatPanel = new JPanel(new BorderLayout());
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
- richFormatPanel.add(createRichTextCateAndSeriesPane(), BorderLayout.NORTH);
- richFormatPanel.add(createRichTextDataNumberPane(), BorderLayout.CENTER);
- richFormatPanel.add(createRichTextDataDetailPane(), BorderLayout.SOUTH);
+ return new VanChartRichTextPane(richEditorPane) {
- return richFormatPanel;
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ if (detailed) {
+ return new VanChartBoxRichTextDetailedFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ return new VanChartBoxRichTextResultFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
+ };
+ }
+
+ protected String[] getRichTextFieldNames() {
+ if (detailed) {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Category_Use_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Data_Number"),
+ Toolkit.i18nText("Fine-Design_Chart_Max_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Data_Q3"),
+ Toolkit.i18nText("Fine-Design_Chart_Data_Median"),
+ Toolkit.i18nText("Fine-Design_Chart_Data_Q1"),
+ Toolkit.i18nText("Fine-Design_Chart_Min_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Outlier_Value")
+ };
+ }
+
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Category_Use_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Max_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Data_Q3"),
+ Toolkit.i18nText("Fine-Design_Chart_Data_Median"),
+ Toolkit.i18nText("Fine-Design_Chart_Data_Q1"),
+ Toolkit.i18nText("Fine-Design_Chart_Min_Value")
+ };
}
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextCategoryNameFormatPane(), null},
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{richTextNumber, null},
- new Component[]{richTextMax, null},
- new Component[]{richTextQ3, null},
- new Component[]{richTextMedian, null},
- new Component[]{richTextQ1, null},
- new Component[]{richTextMin, null},
- new Component[]{richTextOutlier, null}
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ if (detailed) {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipCategoryFormat(),
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipDataNumberFormat(),
+ new AttrTooltipDataMaxFormat(),
+ new AttrTooltipDataQ3Format(),
+ new AttrTooltipDataMedianFormat(),
+ new AttrTooltipDataQ1Format(),
+ new AttrTooltipDataMinFormat(),
+ new AttrTooltipDataOutlierFormat()
+ };
+ }
+
+ return new AttrTooltipFormat[]{
+ new AttrTooltipCategoryFormat(),
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipDataMaxFormat(),
+ new AttrTooltipDataQ3Format(),
+ new AttrTooltipDataMedianFormat(),
+ new AttrTooltipDataQ1Format(),
+ new AttrTooltipDataMinFormat()
};
}
@@ -249,72 +243,6 @@ public class VanChartBoxTooltipContentPane extends VanChartTooltipContentPane {
return detailPane;
}
- private JPanel createRichTextCateAndSeriesPane() {
- double p = TableLayout.PREFERRED;
- double f = TableLayout.FILL;
- double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
-
- double[] columnSize = {f, e};
- double[] rowSize = {p, p, p};
-
- Component[][] cateAndSeries = new Component[][]{
- new Component[]{null, null},
- new Component[]{null, getRichTextCategoryNameFormatPane()},
- new Component[]{null, getRichTextSeriesNameFormatPane()}
- };
-
- return TableLayoutHelper.createTableLayoutPane(cateAndSeries, rowSize, columnSize);
- }
-
- private JPanel createRichTextDataNumberPane() {
- double p = TableLayout.PREFERRED;
- double f = TableLayout.FILL;
- double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
-
- double[] columnSize = {f, e};
- double[] rowSize = {p, p};
-
- Component[][] dataNumber = new Component[][]{
- new Component[]{null, null},
- new Component[]{null, richTextNumber},
- };
-
- richTextNumberPane = TableLayoutHelper.createTableLayoutPane(dataNumber, rowSize, columnSize);
-
- return richTextNumberPane;
- }
-
- private JPanel createRichTextDataDetailPane() {
- double p = TableLayout.PREFERRED;
- double f = TableLayout.FILL;
- double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
-
- double[] columnSize = {f, e};
-
- JPanel detailPane = new JPanel(new BorderLayout());
-
- Component[][] richTextDetail = new Component[][]{
- new Component[]{null, null},
- new Component[]{null, richTextMax},
- new Component[]{new UILabel(getLabelContentTitle()), richTextQ3},
- new Component[]{null, richTextMedian},
- new Component[]{null, richTextQ1},
- new Component[]{null, richTextMin}
- };
-
- Component[][] dataOutlier = new Component[][]{
- new Component[]{null, null},
- new Component[]{null, richTextOutlier},
- };
-
- richTextOutlierPane = TableLayoutHelper.createTableLayoutPane(dataOutlier, new double[]{p, p}, columnSize);
-
- detailPane.add(TableLayoutHelper.createTableLayoutPane(richTextDetail, new double[]{p, p, p, p, p, p}, columnSize), BorderLayout.NORTH);
- detailPane.add(richTextOutlierPane, BorderLayout.CENTER);
-
- return detailPane;
- }
-
public boolean isDirty() {
return getCategoryNameFormatPane().isDirty()
|| getSeriesNameFormatPane().isDirty()
@@ -362,63 +290,21 @@ public class VanChartBoxTooltipContentPane extends VanChartTooltipContentPane {
}
}
- protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
- setRichTextAttr(new AttrTooltipRichText());
- Map params = getRichTextAttr().getParams();
-
- AttrTooltipCategoryFormat categoryFormat = attrTooltipContent.getRichTextCategoryFormat();
- getRichTextCategoryNameFormatPane().populate(categoryFormat);
- getRichTextCategoryNameFormatPane().updateFormatParams(params, categoryFormat.getJs());
-
- AttrTooltipSeriesFormat seriesFormat = attrTooltipContent.getRichTextSeriesFormat();
- getRichTextSeriesNameFormatPane().populate(seriesFormat);
- getRichTextSeriesNameFormatPane().updateFormatParams(params, seriesFormat.getJs());
-
- if (attrTooltipContent instanceof AttrBoxTooltipContent) {
- AttrBoxTooltipContent boxTooltipContent = (AttrBoxTooltipContent) attrTooltipContent;
-
- VanChartFormatPaneWithoutCheckBox[] formatPaneGroup = getFormatPaneGroup();
- AttrTooltipFormat[] formatGroup = getFormatGroup(boxTooltipContent);
-
- populateRichTextFormat(formatPaneGroup, formatGroup);
- populateRichText(attrTooltipContent.getRichTextAttr());
-
- checkRichEditorState(attrTooltipContent);
- }
- }
-
- private VanChartFormatPaneWithoutCheckBox[] getFormatPaneGroup() {
- if (detailed) {
- return new VanChartFormatPaneWithoutCheckBox[]{
- richTextNumber, richTextMax, richTextQ3, richTextMedian,
- richTextQ1, richTextMin, richTextOutlier
- };
- }
-
- return new VanChartFormatPaneWithoutCheckBox[]{
- richTextMax, richTextQ3, richTextMedian, richTextQ1, richTextMin
- };
- }
+ protected void updateTooltipFormat(AttrTooltipContent target, AttrTooltipContent source) {
+ super.updateTooltipFormat(target, source);
- private AttrTooltipFormat[] getFormatGroup(AttrBoxTooltipContent boxTooltipContent) {
- AttrTooltipDataNumberFormat richTextNumber = boxTooltipContent.getRichTextNumber();
- AttrTooltipDataMaxFormat richTextMaxFormat = boxTooltipContent.getRichTextMax();
- AttrTooltipDataQ3Format richTextQ3Format = boxTooltipContent.getRichTextQ3();
- AttrTooltipDataMedianFormat richTextMedianFormat = boxTooltipContent.getRichTextMedian();
- AttrTooltipDataQ1Format richTextQ1Format = boxTooltipContent.getRichTextQ1();
- AttrTooltipDataMinFormat richTextMinFormat = boxTooltipContent.getRichTextMin();
- AttrTooltipDataOutlierFormat richTextOutlierFormat = boxTooltipContent.getRichTextOutlier();
+ if (target instanceof AttrBoxTooltipContent && source instanceof AttrBoxTooltipContent) {
+ AttrBoxTooltipContent targetGantt = (AttrBoxTooltipContent) target;
+ AttrBoxTooltipContent sourceGantt = (AttrBoxTooltipContent) source;
- if (detailed) {
- return new AttrTooltipFormat[]{
- richTextNumber, richTextMaxFormat, richTextQ3Format, richTextMedianFormat,
- richTextQ1Format, richTextMinFormat, richTextOutlierFormat
- };
+ targetGantt.setRichTextNumber(sourceGantt.getRichTextNumber());
+ targetGantt.setRichTextMax(sourceGantt.getRichTextMax());
+ targetGantt.setRichTextQ3(sourceGantt.getRichTextQ3());
+ targetGantt.setRichTextMedian(sourceGantt.getRichTextMedian());
+ targetGantt.setRichTextQ1(sourceGantt.getRichTextQ1());
+ targetGantt.setRichTextMin(sourceGantt.getRichTextMin());
+ targetGantt.setRichTextOutlier(sourceGantt.getRichTextOutlier());
}
-
- return new AttrTooltipFormat[]{
- richTextMaxFormat, richTextQ3Format, richTextMedianFormat, richTextQ1Format, richTextMinFormat
- };
}
protected void updateFormatPane(AttrTooltipContent attrTooltipContent) {
@@ -440,30 +326,10 @@ public class VanChartBoxTooltipContentPane extends VanChartTooltipContentPane {
}
}
- protected void updateRichEditor(AttrTooltipContent attrTooltipContent) {
- getRichTextCategoryNameFormatPane().update(attrTooltipContent.getRichTextCategoryFormat());
- getRichTextSeriesNameFormatPane().update(attrTooltipContent.getRichTextSeriesFormat());
-
- if (attrTooltipContent instanceof AttrBoxTooltipContent) {
- AttrBoxTooltipContent boxTooltipContent = (AttrBoxTooltipContent) attrTooltipContent;
-
- richTextNumber.update(boxTooltipContent.getRichTextNumber());
- richTextMax.update(boxTooltipContent.getRichTextMax());
- richTextQ3.update(boxTooltipContent.getRichTextQ3());
- richTextMedian.update(boxTooltipContent.getRichTextMedian());
- richTextQ1.update(boxTooltipContent.getRichTextQ1());
- richTextMin.update(boxTooltipContent.getRichTextMin());
- richTextOutlier.update(boxTooltipContent.getRichTextOutlier());
- }
- }
-
public void checkFormatVisible(boolean detailed) {
this.detailed = detailed;
dataNumberPane.setVisible(detailed);
dataOutlierPane.setVisible(detailed);
-
- richTextNumberPane.setVisible(detailed);
- richTextOutlierPane.setVisible(detailed);
}
}
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/custom/other/VanChartCustomConditionAttrPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/other/VanChartCustomConditionAttrPane.java
index da696fcce..0631312c8 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/custom/other/VanChartCustomConditionAttrPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/custom/other/VanChartCustomConditionAttrPane.java
@@ -39,7 +39,9 @@ public class VanChartCustomConditionAttrPane extends BasicScrollPane {
layoutContentPane();
}
if(conditionAttrPane != null) {
- conditionAttrPane.populateBean((VanChartCustomPlot)chart.getPlot());
+ conditionAttrPane.setChart(chart);
+ conditionAttrPane.populateBean(chart.getPlot());
+ conditionAttrPane.tabChanged();
}
}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java
index cc0689d9c..4cb5c652f 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java
@@ -1,11 +1,13 @@
package com.fr.van.chart.custom.other;
+import com.fr.chart.chartattr.Chart;
import com.fr.design.dialog.BasicPane;
import com.fr.plugin.chart.attr.plot.VanChartPlot;
import com.fr.plugin.chart.custom.CustomPlotFactory;
import com.fr.plugin.chart.custom.VanChartCustomPlot;
import com.fr.plugin.chart.custom.type.CustomPlotType;
import com.fr.van.chart.custom.component.VanChartCustomPlotTabPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorPane;
import com.fr.van.chart.designer.other.VanChartConditionAttrPane;
import javax.swing.JPanel;
@@ -16,10 +18,17 @@ import java.util.List;
* Created by Fangjie on 2016/4/28.
*/
public class VanChartCustomPlotConditionAttrTabPane extends VanChartCustomPlotTabPane {
+
+ private Chart chart;
+
public VanChartCustomPlotConditionAttrTabPane(VanChartCustomPlot plot, BasicPane parent) {
super(plot, parent);
}
+ public void setChart(Chart chart) {
+ this.chart = chart;
+ }
+
@Override
protected void initTabTitle() {
List customPlotList = plot.getCustomPlotList();
@@ -73,6 +82,18 @@ public class VanChartCustomPlotConditionAttrTabPane extends VanChartCustomPlotTa
}
}
+ protected void tabChanged() {
+ List customPlotList = plot.getCustomPlotList();
+ int index = getSelectedIndex();
+
+ if (customPlotList.size() > index && paneList.size() > index) {
+ VanChartPlot chartPlot = customPlotList.get(index);
+
+ CustomPlotType plotType = CustomPlotFactory.getCustomType(chartPlot);
+ VanChartRichEditorPane.refreshCustomChartTableFieldNames(chart, plotType);
+ }
+ }
+
@Override
public VanChartCustomPlot updateBean() {
return null;
diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomPlotLabelTabPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomPlotLabelTabPane.java
index 04b94ef5c..ed1dd63ff 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomPlotLabelTabPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomPlotLabelTabPane.java
@@ -68,6 +68,21 @@ public class VanChartCustomPlotLabelTabPane extends VanChartCustomPlotTabPane customPlotList = plot.getCustomPlotList();
+ int index = getSelectedIndex();
+
+ if (customPlotList.size() > index && paneList.size() > index) {
+ VanChartPlot chartPlot = customPlotList.get(index);
+ VanChartPlotLabelPane labelPane = (VanChartPlotLabelPane)paneList.get(index);
+ VanChartCustomStylePane stylePane = (VanChartCustomStylePane)labelPane.getParentPane();
+
+ if (stylePane != null) {
+ stylePane.refreshTableFieldNames(chartPlot);
+ }
+ }
+ }
+
@Override
public VanChartCustomPlot updateBean() {
return null;
diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomPlotTooltipTabPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomPlotTooltipTabPane.java
index 8595e8451..8cb4f4920 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomPlotTooltipTabPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomPlotTooltipTabPane.java
@@ -67,6 +67,21 @@ public class VanChartCustomPlotTooltipTabPane extends VanChartCustomPlotTabPane<
}
}
+ protected void tabChanged() {
+ List customPlotList = plot.getCustomPlotList();
+ int index = getSelectedIndex();
+
+ if (customPlotList.size() > index && paneList.size() > index) {
+ VanChartPlot chartPlot = customPlotList.get(index);
+ VanChartPlotTooltipPane tooltipPane = (VanChartPlotTooltipPane)paneList.get(index);
+ VanChartCustomStylePane stylePane = (VanChartCustomStylePane)tooltipPane.getParentPane();
+
+ if (stylePane != null) {
+ stylePane.refreshTableFieldNames(chartPlot);
+ }
+ }
+ }
+
@Override
public VanChartCustomPlot updateBean() {
return null;
diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomStylePane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomStylePane.java
index fcfdc64de..a01cbf1cb 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomStylePane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/custom/style/VanChartCustomStylePane.java
@@ -5,8 +5,11 @@ import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.gui.style.series.ChartSeriesPane;
import com.fr.plugin.chart.attr.plot.VanChartAxisPlot;
+import com.fr.plugin.chart.attr.plot.VanChartPlot;
import com.fr.plugin.chart.custom.CustomPlotFactory;
import com.fr.plugin.chart.custom.VanChartCustomPlot;
+import com.fr.plugin.chart.custom.type.CustomPlotType;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import java.util.List;
@@ -68,4 +71,12 @@ public class VanChartCustomStylePane extends VanChartStylePane {
CustomPlotFactory.dataSheetSynchronization((VanChartCustomPlot) collection.getSelectedChart().getPlot());
}
+ public void refreshTableFieldNames(VanChartPlot plot) {
+ CustomPlotType plotType = CustomPlotFactory.getCustomType(plot);
+ VanChartRichEditorPane.refreshCustomChartTableFieldNames(getChart(), plotType);
+ }
+
+ public void refreshTableFieldNames() {
+
+ }
}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/PlotFactory.java b/designer-chart/src/main/java/com/fr/van/chart/designer/PlotFactory.java
index 0f9db09fa..3167b5f59 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/designer/PlotFactory.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/PlotFactory.java
@@ -19,6 +19,7 @@ import com.fr.plugin.chart.heatmap.VanChartHeatMapPlot;
import com.fr.plugin.chart.line.VanChartLinePlot;
import com.fr.plugin.chart.map.VanChartMapPlot;
import com.fr.plugin.chart.multilayer.VanChartMultiPiePlot;
+import com.fr.plugin.chart.radar.VanChartRadarPlot;
import com.fr.plugin.chart.scatter.VanChartScatterPlot;
import com.fr.plugin.chart.structure.VanChartStructurePlot;
import com.fr.plugin.chart.treemap.VanChartTreeMapPlot;
@@ -94,6 +95,20 @@ public class PlotFactory {
return autoAdjustLabelPlots.contains(plot.getClass());
}
+ private static Set> supportAddTableFieldPlots = new HashSet<>();
+
+ static {
+ supportAddTableFieldPlots.add(PiePlot4VanChart.class);
+ supportAddTableFieldPlots.add(VanChartColumnPlot.class);
+ supportAddTableFieldPlots.add(VanChartLinePlot.class);
+ supportAddTableFieldPlots.add(VanChartAreaPlot.class);
+ supportAddTableFieldPlots.add(VanChartRadarPlot.class);
+ }
+
+ public static boolean plotSupportAddTableField(Plot plot) {
+ return supportAddTableFieldPlots.contains(plot.getClass());
+ }
+
private static Set> borderAndBackgroundLabelPlots = new HashSet<>();
static {
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/VanChartRefreshTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRefreshTooltipContentPane.java
index 7ecb797d6..93ef14761 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRefreshTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRefreshTooltipContentPane.java
@@ -1,9 +1,7 @@
package com.fr.van.chart.designer.component;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -34,14 +32,6 @@ public class VanChartRefreshTooltipContentPane extends VanChartTooltipContentPan
setChangedPercentFormatPane(new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane));
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- super.initRichTextFormatPane(parent, showOnPane);
-
- setRichTextChangedValueFormatPane(new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextChangedPercentFormatPane(new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane));
- }
-
protected Component[][] getPaneComponents(){
return new Component[][]{
new Component[]{getCategoryNameFormatPane(), null},
@@ -52,16 +42,4 @@ public class VanChartRefreshTooltipContentPane extends VanChartTooltipContentPan
new Component[]{getChangedPercentFormatPane(), null},
};
}
-
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextCategoryNameFormatPane(), null},
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{getRichTextValueFormatPane(), null},
- new Component[]{getRichTextChangedValueFormatPane(), null},
- new Component[]{getRichTextPercentFormatPane(), null},
- new Component[]{getRichTextChangedPercentFormatPane(), null}
- };
- }
-
}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java
deleted file mode 100644
index 6f308ad43..000000000
--- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java
+++ /dev/null
@@ -1,191 +0,0 @@
-package com.fr.van.chart.designer.component;
-
-import com.fr.concurrent.NamedThreadFactory;
-import com.fr.design.DesignerEnvManager;
-import com.fr.design.ui.ModernUIPane;
-import com.fr.general.IOUtils;
-import com.fr.log.FineLoggerFactory;
-import com.fr.plugin.chart.base.AttrTooltipRichText;
-import com.fr.plugin.chart.type.TextAlign;
-import com.fr.stable.StringUtils;
-import com.teamdev.jxbrowser.chromium.Browser;
-import com.teamdev.jxbrowser.chromium.JSValue;
-import com.teamdev.jxbrowser.chromium.events.ScriptContextAdapter;
-import com.teamdev.jxbrowser.chromium.events.ScriptContextEvent;
-
-import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-public class VanChartRichEditorPane {
-
- private static final String namespace = "Pool";
- private static final String variable = "data";
- private static final String richEditorPath = "/com/fr/design/editor/rich_editor.html";
- private static final String expression = "dispatch()";
-
- private static ModernUIPane richEditorPane;
- private static Browser browser;
-
- public static void initRichEditorPane() {
- ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(new NamedThreadFactory("VanChartRichEditor"));
-
- try {
- singleThreadExecutor.submit(new Runnable() {
- @Override
- public void run() {
- try {
- richEditorPane = initPane(new RichEditorModel());
- } catch (Exception e) {
- FineLoggerFactory.getLogger().error(e.getMessage(), e);
- }
- }
- });
- } finally {
- singleThreadExecutor.shutdown();
- }
- }
-
- public static ModernUIPane createRichEditorPane(AttrTooltipRichText richEditor) {
- RichEditorModel model = getRichEditorModel(richEditor);
-
- if (richEditorPane == null) {
- richEditorPane = initPane(model);
- } else if (browser != null) {
- updatePane(browser, model);
- }
-
- return richEditorPane;
- }
-
- public static ModernUIPane initPane(RichEditorModel model) {
- return new ModernUIPane.Builder()
- .prepare(new ScriptContextAdapter() {
- public void onScriptContextCreated(ScriptContextEvent event) {
- browser = event.getBrowser();
- browser.getCacheStorage().clearCache();
-
- browser.executeJavaScript(IOUtils.readResourceAsString("/com/fr/web/ui/fineui.min.js"));
- browser.executeJavaScript(IOUtils.readResourceAsString("/com/fr/design/editor/script/i18n.js"));
- browser.executeJavaScript(generateTransformI18nJS());
- browser.executeJavaScript(IOUtils.readResourceAsString("/com/fr/web/ui/materials.min.js"));
-
- JSValue ns = browser.executeJavaScriptAndReturnValue("window." + namespace);
- ns.asObject().setProperty(variable, model);
- }
- })
- .withEMB(richEditorPath)
- .namespace(namespace).build();
- }
-
- public static void updatePane(Browser browser, RichEditorModel model) {
- JSValue ns = browser.executeJavaScriptAndReturnValue("window." + namespace);
- ns.asObject().setProperty(variable, model);
- browser.executeJavaScript("window." + namespace + "." + expression);
- }
-
- public static RichEditorModel getRichEditorModel(AttrTooltipRichText richText) {
- Map paramsMap = richText.getParams();
- StringBuilder paramsStr = new StringBuilder(StringUtils.EMPTY);
-
- if (paramsMap != null) {
- for (Map.Entry entry : paramsMap.entrySet()) {
- paramsStr.append(entry.getKey()).append(":").append(entry.getValue());
- paramsStr.append("-");
- }
- }
-
- int len = paramsStr.length();
-
- if (len > 0) {
- paramsStr.deleteCharAt(len - 1);
- }
-
- String content = richText.getContent();
- String initParams = StringUtils.EMPTY;
- String align = StringUtils.EMPTY;
-
- if (content.contains("data-id") && !content.contains("class")) {
- initParams = richText.getInitParamsContent();
-
- String left = TextAlign.LEFT.getAlign();
- String center = TextAlign.CENTER.getAlign();
-
- align = content.contains(left) ? left : center;
- }
-
- return new RichEditorModel(content, richText.isAuto(), paramsStr.toString(), initParams, align);
- }
-
- public static String generateTransformI18nJS() {
- String language = "zh_CN";
-
- Locale locale = DesignerEnvManager.getEnvManager().getLanguage();
-
- if (locale != null) {
- language = locale.toString();
- }
-
- return "!(function () { window.transformI18n && window.transformI18n('" + language + "' || 'zh_CN'); }());";
- }
-
- public static class RichEditorModel {
- private String content = StringUtils.EMPTY;
- private boolean auto = true;
- private String params = StringUtils.EMPTY;
- private String initParams = StringUtils.EMPTY;
- private String align = TextAlign.LEFT.getAlign();
-
- public RichEditorModel() {
- }
-
- public RichEditorModel(String content, boolean auto, String params, String initParams, String align) {
- this.content = content;
- this.auto = auto;
- this.params = params;
- this.initParams = initParams;
- this.align = align;
- }
-
- public String getContent() {
- return content;
- }
-
- public void setContent(String content) {
- this.content = content;
- }
-
- public boolean isAuto() {
- return auto;
- }
-
- public void setAuto(boolean auto) {
- this.auto = auto;
- }
-
- public String getParams() {
- return params;
- }
-
- public void setParams(String params) {
- this.params = params;
- }
-
- public String getInitParams() {
- return initParams;
- }
-
- public void setInitParams(String initParams) {
- this.initParams = initParams;
- }
-
- public String getAlign() {
- return align;
- }
-
- public void setAlign(String align) {
- this.align = align;
- }
- }
-}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java
index b5f03a728..86086abdd 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java
@@ -15,23 +15,25 @@ import com.fr.design.ui.ModernUIPane;
import com.fr.general.ComparatorUtils;
import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.base.AttrTooltipRichText;
+import com.fr.plugin.chart.base.TableFieldCollection;
+import com.fr.plugin.chart.base.format.AttrTooltipCategoryFormat;
import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.stable.StringUtils;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextDialog;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JComponent;
@@ -45,6 +47,10 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
/**
* 数据点提示内容界面,含有通用设置、富文本编辑器、自定义JS界面
@@ -73,13 +79,6 @@ public class VanChartTooltipContentPane extends BasicBeanPane getContent() {
return content;
}
public AttrTooltipRichText getRichTextAttr() {
- return richText;
+ return this.richTextTooltipContent.getRichTextAttr();
}
public void setRichTextAttr(AttrTooltipRichText richText) {
- this.richText = richText;
+ this.richTextTooltipContent.setRichTextAttr(richText);
+ }
+
+ public void setRichTextTooltipContent(AttrTooltipContent richTextTooltipContent) {
+ this.richTextTooltipContent = richTextTooltipContent;
}
private JPanel createLabelContentPane() {
@@ -406,24 +361,16 @@ public class VanChartTooltipContentPane extends BasicBeanPane pane = VanChartRichEditorPane.createRichEditorPane(richText);
- BasicDialog dialog = new VanChartRichEditorDialog(DesignerContext.getDesignerFrame(), pane);
+ AttrTooltipRichText richText = this.richTextTooltipContent.getRichTextAttr();
+ refreshTableFieldParams(richText.getParams());
+ ModernUIPane richEditorPane = VanChartRichEditorPane.createRichEditorPane(richText);
+ VanChartRichTextPane richTextPane = this.createRichTextPane(richEditorPane);
- pane.populate(VanChartRichEditorPane.getRichEditorModel(richText));
+ BasicDialog richTextDialog = new VanChartRichTextDialog(DesignerContext.getDesignerFrame(), richTextPane);
- dialog.addDialogActionListener(new DialogActionAdapter() {
+ richTextPane.populateBean(this.richTextTooltipContent);
+ richEditorPane.populate(VanChartRichEditorPane.getRichEditorModel(richText));
+
+ richTextDialog.addDialogActionListener(new DialogActionAdapter() {
public void doOk() {
- VanChartRichEditorPane.RichEditorModel model = pane.update();
+ AttrTooltipContent temporary = richTextPane.updateBean();
+ VanChartRichEditorModel model = richEditorPane.update();
String content = model.getContent();
updateLocalRichText(content, model.isAuto());
- SwingUtilities.getWindowAncestor(pane).setVisible(false);
+ TableFieldCollection fieldCollection = temporary.getFieldCollection();
+ if (fieldCollection != null) {
+ fieldCollection.checkFieldDefinition(content);
+ }
+
+ updateTooltipFormat(richTextTooltipContent, temporary);
+
+ SwingUtilities.getWindowAncestor(richEditorPane).setVisible(false);
}
public void doCancel() {
- SwingUtilities.getWindowAncestor(pane).setVisible(false);
+ SwingUtilities.getWindowAncestor(richEditorPane).setVisible(false);
}
});
- dialog.setVisible(true);
+ richTextDialog.setVisible(true);
if (parent != null) {
parent.attributeChanged();
}
}
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+ return new VanChartRichTextPane(richEditorPane);
+ }
+
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Category_Use_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Percent")
+ };
+ }
+
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipCategoryFormat(),
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
+ };
+ }
+
+ private void refreshRichTextParams(AttrTooltipRichText richText) {
+ String[] fieldNames = getRichTextFieldNames();
+ AttrTooltipFormat[] fieldFormats = getRichTextFieldFormats();
+
+ Map params = new LinkedHashMap<>();
+
+ for (int i = 0, len = fieldNames.length; i < len; i++) {
+ params.put(fieldNames[i], fieldFormats[i].getJs());
+ }
+
+ refreshTableFieldParams(params);
+
+ richText.setParams(params);
+ }
+
+ private void refreshTableFieldParams(Map params) {
+ List tableFieldNames = VanChartRichEditorPane.getFieldNames();
+ List defaultParams = Arrays.asList(getRichTextFieldNames());
+
+ if (tableFieldNames == null || params == null) {
+ return;
+ }
+
+ for (String fieldName : tableFieldNames) {
+ // 富文本默认参数和数据集字段重名时,显示默认参数
+ if (!defaultParams.contains(fieldName)) {
+ params.put(fieldName, "${" + fieldName + "_" + fieldName.hashCode() + "}");
+ }
+ }
+ }
+
private JPanel createHtmlPane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
@@ -494,13 +507,6 @@ public class VanChartTooltipContentPane 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/component/marker/VanChartImageMarkerPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/marker/VanChartImageMarkerPane.java
index 5e05305ca..d28354bdb 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/marker/VanChartImageMarkerPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/marker/VanChartImageMarkerPane.java
@@ -4,6 +4,7 @@ import com.fr.base.background.ImageFileBackground;
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.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.backgroundpane.ImageBackgroundQuickPane;
@@ -30,8 +31,8 @@ public class VanChartImageMarkerPane extends BasicBeanPane {
public VanChartImageMarkerPane() {
imageBackgroundPane = new ImageBackgroundQuickPane(false);
imageBackgroundPane.setPreferredSize(getImageBackgroundPreferredSize(imageBackgroundPane.getPreferredSize()));
- width = new UISpinner(0, 100, 0.5, 30);
- height = new UISpinner(0, 100, 0.5, 30);
+ width = new UISpinnerWithPx(0, 100, 0.5, 30);
+ height = new UISpinnerWithPx(0, 100, 0.5, 30);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldAttrPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldAttrPane.java
new file mode 100644
index 000000000..5cab5485f
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldAttrPane.java
@@ -0,0 +1,103 @@
+package com.fr.van.chart.designer.component.richText;
+
+import com.fr.data.util.function.AbstractDataFunction;
+import com.fr.design.event.UIObserverListener;
+import com.fr.design.gui.icombobox.UIComboBox;
+import com.fr.design.gui.ilable.UILabel;
+import com.fr.design.gui.style.FormatPane;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.layout.TableLayout;
+import com.fr.design.mainframe.chart.gui.data.CalculateComboBox;
+import com.fr.plugin.chart.base.format.IntervalTimeFormat;
+import com.fr.van.chart.designer.TableLayout4VanChartHelper;
+import com.fr.van.chart.designer.component.format.FormatPaneWithOutFont;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+import javax.swing.SwingConstants;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.event.ActionListener;
+import java.text.Format;
+
+public class VanChartFieldAttrPane extends JPanel {
+
+ private FormatPane fieldFormatPane;
+ private UIComboBox intervalTimeBox;
+ private CalculateComboBox dataFunctionBox;
+
+ private JPanel formatPane;
+ private JPanel intervalTimePane;
+ private JPanel fieldFunctionPane;
+
+ public VanChartFieldAttrPane() {
+ initComponents();
+
+ this.setLayout(new BorderLayout());
+ this.add(formatPane, BorderLayout.NORTH);
+ this.add(fieldFunctionPane, BorderLayout.CENTER);
+ this.setBorder(BorderFactory.createEmptyBorder(0, 30, 0, 0));
+ }
+
+ private void initComponents() {
+ double p = TableLayout.PREFERRED;
+ double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH;
+ double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
+
+ fieldFormatPane = new FormatPaneWithOutFont() {
+ protected JPanel createContentPane(Component[][] components) {
+ return TableLayout4VanChartHelper.createGapTableLayoutPane(components, new double[]{p, p, p}, new double[]{d, e});
+ }
+ };
+ intervalTimeBox = new UIComboBox(IntervalTimeFormat.getFormats());
+ dataFunctionBox = new CalculateComboBox();
+
+ Component[][] intervalTimeComponents = new Component[][]{
+ new Component[]{null, null},
+ new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Report_Base_Format"), SwingConstants.LEFT), intervalTimeBox}
+ };
+ Component[][] dataFunctionComponents = new Component[][]{
+ new Component[]{null, null},
+ new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Summary_Method"), SwingConstants.LEFT), dataFunctionBox}
+ };
+
+ intervalTimePane = TableLayout4VanChartHelper.createGapTableLayoutPane(intervalTimeComponents, new double[]{p, p}, new double[]{d, e});
+
+ formatPane = new JPanel(new BorderLayout());
+ formatPane.add(fieldFormatPane, BorderLayout.NORTH);
+ formatPane.add(intervalTimePane, BorderLayout.CENTER);
+
+ fieldFunctionPane = TableLayout4VanChartHelper.createGapTableLayoutPane(dataFunctionComponents, new double[]{p, p}, new double[]{d, e});
+ }
+
+ public void registerFormatListener(UIObserverListener listener) {
+ fieldFormatPane.registerChangeListener(listener);
+ intervalTimeBox.registerChangeListener(listener);
+ }
+
+ public void registerFunctionListener(ActionListener listener) {
+ dataFunctionBox.addActionListener(listener);
+ }
+
+ public void populate(Format format, IntervalTimeFormat intervalTime, AbstractDataFunction dataFunction, boolean showDataFunction, boolean showIntervalTime) {
+ fieldFormatPane.populateBean(format);
+ intervalTimeBox.setSelectedItem(intervalTime);
+ dataFunctionBox.populateBean(dataFunction);
+
+ fieldFormatPane.setVisible(!showIntervalTime);
+ intervalTimePane.setVisible(showIntervalTime);
+ fieldFunctionPane.setVisible(showDataFunction);
+ }
+
+ public Format updateFormat() {
+ return fieldFormatPane.update();
+ }
+
+ public IntervalTimeFormat updateIntervalTime() {
+ return (IntervalTimeFormat) intervalTimeBox.getSelectedItem();
+ }
+
+ public AbstractDataFunction updateDataFunction() {
+ return dataFunctionBox.updateBean();
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldButton.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldButton.java
new file mode 100644
index 000000000..bae96b2d7
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldButton.java
@@ -0,0 +1,202 @@
+package com.fr.van.chart.designer.component.richText;
+
+import com.fr.base.BaseUtils;
+import com.fr.data.util.function.DataFunction;
+import com.fr.design.gui.ibutton.UIButton;
+import com.fr.design.gui.ibutton.UIButtonUI;
+import com.fr.design.gui.ibutton.UIToggleButton;
+import com.fr.design.layout.TableLayout;
+import com.fr.design.layout.TableLayoutHelper;
+import com.fr.design.utils.gui.GUIPaintUtils;
+import com.fr.plugin.chart.base.FirstFunction;
+import com.fr.plugin.chart.base.format.AttrTooltipDurationFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.IntervalTimeFormat;
+import com.fr.stable.StringUtils;
+import com.fr.van.chart.designer.TableLayout4VanChartHelper;
+
+import javax.swing.Icon;
+import javax.swing.JPanel;
+import javax.swing.plaf.ButtonUI;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.text.Format;
+
+public class VanChartFieldButton extends JPanel {
+
+ private static final Icon ADD_ICON = BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png");
+ private static final Color HOVER_COLOR = new Color(232, 232, 232);
+
+ private static final int W = 200;
+ private static final int H = 24;
+
+ private final String fieldName;
+ private final String fieldId;
+
+ private final AttrTooltipFormat tooltipFormat;
+ private final boolean showDataFunction;
+ private final boolean showIntervalTime;
+
+ private UIToggleButton fieldButton;
+ private UIButton addButton;
+
+ private DataFunction dataFunction = new FirstFunction();
+
+ public VanChartFieldButton(String fieldName, AttrTooltipFormat format, VanChartFieldListener listener) {
+ this(fieldName, format, false, false, listener);
+ }
+
+ public VanChartFieldButton(String fieldName, AttrTooltipFormat format, boolean showDataFunction, VanChartFieldListener listener) {
+ this(fieldName, format, showDataFunction, false, listener);
+ }
+
+ public VanChartFieldButton(String fieldName, AttrTooltipFormat format, boolean showDataFunction, boolean showIntervalTime, VanChartFieldListener listener) {
+ this.fieldName = fieldName;
+ this.tooltipFormat = format;
+
+ this.showDataFunction = showDataFunction;
+ this.showIntervalTime = showIntervalTime;
+
+ this.fieldId = format == null ? StringUtils.EMPTY : format.getFormatJSONKey();
+
+ initComponents(fieldName, listener);
+
+ this.setLayout(new BorderLayout());
+ this.add(getContentPane(), BorderLayout.CENTER);
+ }
+
+ public String getFieldName() {
+ return fieldName;
+ }
+
+ public boolean isEnable() {
+ return this.tooltipFormat.isEnable();
+ }
+
+ public void setEnable(boolean enable) {
+ this.tooltipFormat.setEnable(enable);
+ }
+
+ public Format getFormat() {
+ return tooltipFormat.getFormat();
+ }
+
+ public void setFormat(Format format) {
+ this.tooltipFormat.setFormat(format);
+ }
+
+ public IntervalTimeFormat getIntervalTimeFormat() {
+ if (tooltipFormat instanceof AttrTooltipDurationFormat) {
+ return ((AttrTooltipDurationFormat) tooltipFormat).getIntervalTimeFormat();
+ }
+
+ return IntervalTimeFormat.DAY;
+ }
+
+ public void setIntervalTimeFormat(IntervalTimeFormat intervalTime) {
+ if (tooltipFormat instanceof AttrTooltipDurationFormat) {
+ ((AttrTooltipDurationFormat) tooltipFormat).setIntervalTimeFormat(intervalTime);
+ }
+ }
+
+ public DataFunction getDataFunction() {
+ return dataFunction;
+ }
+
+ public void setDataFunction(DataFunction dataFunction) {
+ this.dataFunction = dataFunction;
+ }
+
+ public boolean isShowDataFunction() {
+ return showDataFunction;
+ }
+
+ public boolean isShowIntervalTime() {
+ return showIntervalTime;
+ }
+
+ public String getFormatJs() {
+ return this.tooltipFormat.getJs();
+ }
+
+ private void initComponents(String fieldName, VanChartFieldListener listener) {
+ fieldButton = new UIToggleButton(fieldName) {
+
+ protected MouseListener getMouseListener() {
+
+ return new MouseAdapter() {
+ public void mousePressed(MouseEvent e) {
+ setSelected(true);
+
+ listener.refreshSelectedPane(fieldName);
+ listener.setGlobalName(fieldName);
+ listener.populateFieldFormatPane();
+ }
+ };
+ }
+
+ public ButtonUI getUI() {
+ return new FieldButtonUI();
+ }
+ };
+
+ addButton = new UIButton(ADD_ICON) {
+ public ButtonUI getUI() {
+ return new FieldButtonUI();
+ }
+ };
+
+ addButton.addMouseListener(new MouseAdapter() {
+
+ public void mousePressed(MouseEvent e) {
+ super.mousePressed(e);
+
+ listener.addSelectedField(fieldName, fieldId);
+ }
+ });
+
+ fieldButton.setBorderPaintedOnlyWhenPressed(true);
+ addButton.setBorderPaintedOnlyWhenPressed(true);
+ }
+
+ private JPanel getContentPane() {
+ Component[][] components = new Component[][]{
+ new Component[]{fieldButton, addButton}
+ };
+
+ double p = TableLayout.PREFERRED;
+ double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
+ double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH;
+
+ double[] rowSize = {p};
+ double[] columnSize = {e, d};
+
+ JPanel content = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 3, 0);
+ content.setPreferredSize(new Dimension(W, H));
+
+ return content;
+ }
+
+ public void setSelectedState(boolean selected) {
+ fieldButton.setSelected(selected);
+ }
+
+ private static class FieldButtonUI extends UIButtonUI {
+
+ protected void doExtraPainting(UIButton b, Graphics2D g2d, int w, int h, String selectedRoles) {
+ if (isPressed(b) && b.isPressedPainted()) {
+ GUIPaintUtils.fillPressed(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles));
+ } else if (isRollOver(b)) {
+ GUIPaintUtils.fillRollOver(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted(), HOVER_COLOR);
+ } else if (b.isNormalPainted()) {
+ GUIPaintUtils.fillNormal(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted());
+ }
+ }
+ }
+}
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
new file mode 100644
index 000000000..02a62de3b
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldListPane.java
@@ -0,0 +1,400 @@
+package com.fr.van.chart.designer.component.richText;
+
+import com.fr.data.util.function.AbstractDataFunction;
+import com.fr.data.util.function.DataFunction;
+import com.fr.design.event.UIObserverListener;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.general.ComparatorUtils;
+import com.fr.log.FineLoggerFactory;
+import com.fr.plugin.chart.base.AttrTooltipContent;
+import com.fr.plugin.chart.base.TableFieldCollection;
+import com.fr.plugin.chart.base.TableFieldDefinition;
+import com.fr.plugin.chart.base.format.AttrTooltipCategoryFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipDurationFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipFieldFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
+import com.fr.plugin.chart.base.format.IntervalTimeFormat;
+import com.fr.van.chart.designer.TableLayout4VanChartHelper;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.Format;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class VanChartFieldListPane extends JPanel {
+
+ private static final int FIELD_ADD_W = 400;
+ private static final int FIELD_ADD_H = 28;
+
+ private VanChartFieldButton categoryNameButton;
+ private VanChartFieldButton seriesNameButton;
+ private VanChartFieldButton valueButton;
+ private VanChartFieldButton percentButton;
+
+ private VanChartFieldAttrPane fieldAttrPane;
+ private ModernUIPane richEditorPane;
+ private List tableFieldNameList;
+ private List tableFieldButtonList = new ArrayList<>();
+ private TableFieldCollection tableFieldCollection = new TableFieldCollection();
+
+ private VanChartFieldListener fieldListener;
+
+ public VanChartFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+
+ List richEditorFieldNames = VanChartRichEditorPane.getFieldNames();
+
+ this.tableFieldNameList = (!supportAddField() || richEditorFieldNames == null) ? new ArrayList<>() : richEditorFieldNames;
+
+ this.fieldAttrPane = fieldAttrPane;
+ this.richEditorPane = richEditorPane;
+
+ initFieldListListener();
+ initDefaultFieldButton();
+
+ registerAttrListener();
+
+ this.setLayout(new BorderLayout());
+
+ this.add(createDefaultFieldPane(), BorderLayout.CENTER);
+ this.add(createTableFieldPane(), BorderLayout.SOUTH);
+ }
+
+ public VanChartFieldButton getCategoryNameButton() {
+ return categoryNameButton;
+ }
+
+ public void setCategoryNameButton(VanChartFieldButton categoryNameButton) {
+ this.categoryNameButton = categoryNameButton;
+ }
+
+ public VanChartFieldButton getSeriesNameButton() {
+ return seriesNameButton;
+ }
+
+ public void setSeriesNameButton(VanChartFieldButton seriesNameButton) {
+ this.seriesNameButton = seriesNameButton;
+ }
+
+ public VanChartFieldButton getValueButton() {
+ return valueButton;
+ }
+
+ public void setValueButton(VanChartFieldButton valueButton) {
+ this.valueButton = valueButton;
+ }
+
+ public VanChartFieldButton getPercentButton() {
+ return percentButton;
+ }
+
+ public void setPercentButton(VanChartFieldButton percentButton) {
+ this.percentButton = percentButton;
+ }
+
+ public VanChartFieldListener getFieldListener() {
+ return fieldListener;
+ }
+
+ private JPanel createDefaultFieldPane() {
+ JPanel fieldPane = new JPanel();
+
+ fieldPane.setLayout(new GridLayout(0, 1, 1, 0));
+
+ addDefaultFieldButton(fieldPane);
+
+ fieldPane.setPreferredSize(new Dimension(FIELD_ADD_W, getDefaultFieldButtonList().size() * FIELD_ADD_H));
+ fieldPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 0, 0));
+
+ return fieldPane;
+ }
+
+ protected void initDefaultFieldButton() {
+ categoryNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Category_Use_Name"),
+ new AttrTooltipCategoryFormat(), false, fieldListener);
+
+ seriesNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ new AttrTooltipSeriesFormat(), false, fieldListener);
+
+ valueButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ new AttrTooltipValueFormat(), false, fieldListener);
+
+ percentButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Percent"),
+ new AttrTooltipPercentFormat(), false, fieldListener);
+ }
+
+ protected boolean supportAddField() {
+ return true;
+ }
+
+ protected void addDefaultFieldButton(JPanel fieldPane) {
+ fieldPane.add(categoryNameButton);
+ fieldPane.add(seriesNameButton);
+ fieldPane.add(valueButton);
+ fieldPane.add(percentButton);
+ }
+
+ private JPanel createTableFieldPane() {
+ if (tableFieldNameList == null || tableFieldNameList.isEmpty()) {
+ return new JPanel();
+ }
+
+ JPanel tableField = new JPanel();
+
+ tableField.setLayout(new GridLayout(0, 1, 1, 0));
+
+ for (String name : tableFieldNameList) {
+ VanChartFieldButton fieldButton = new VanChartFieldButton(name, new AttrTooltipFieldFormat(name), true, fieldListener);
+
+ tableField.add(fieldButton);
+ tableFieldButtonList.add(fieldButton);
+ }
+
+ tableField.setPreferredSize(new Dimension(FIELD_ADD_W, tableFieldNameList.size() * FIELD_ADD_H));
+
+ return TableLayout4VanChartHelper.createExpandablePaneWithTitleTopGap(Toolkit.i18nText("Fine-Design_Report_Table_Field"), tableField);
+ }
+
+ protected List getDefaultFieldButtonList() {
+ List defaultFieldButtonList = new ArrayList<>();
+
+ defaultFieldButtonList.add(categoryNameButton);
+ defaultFieldButtonList.add(seriesNameButton);
+ defaultFieldButtonList.add(valueButton);
+ defaultFieldButtonList.add(percentButton);
+
+ return defaultFieldButtonList;
+ }
+
+ private void initFieldListListener() {
+
+ fieldListener = new VanChartFieldListener() {
+
+ private String fieldName;
+
+ public void setGlobalName(String fieldName) {
+ this.fieldName = fieldName;
+ }
+
+ public String getGlobalName() {
+ return this.fieldName;
+ }
+
+ public VanChartFieldButton getSelectedField() {
+ List defaultFieldButtonList = getDefaultFieldButtonList();
+
+ for (VanChartFieldButton fieldButton : defaultFieldButtonList) {
+ if (ComparatorUtils.equals(fieldButton.getFieldName(), this.fieldName)) {
+ return fieldButton;
+ }
+ }
+
+ for (VanChartFieldButton fieldButton : tableFieldButtonList) {
+ if (ComparatorUtils.equals(fieldButton.getFieldName(), this.fieldName)) {
+ return fieldButton;
+ }
+ }
+
+ return null;
+ }
+
+ public void refreshSelectedPane(String fieldName) {
+ if (ComparatorUtils.equals(fieldName, this.fieldName)) {
+ return;
+ }
+
+ List defaultFieldButtonList = getDefaultFieldButtonList();
+
+ for (VanChartFieldButton fieldButton : defaultFieldButtonList) {
+ fieldButton.setSelectedState(ComparatorUtils.equals(fieldButton.getFieldName(), fieldName));
+ }
+
+ for (VanChartFieldButton fieldButton : tableFieldButtonList) {
+ fieldButton.setSelectedState(ComparatorUtils.equals(fieldButton.getFieldName(), fieldName));
+ }
+ }
+
+ public void addSelectedField(String fieldName, String fieldId) {
+ VanChartRichEditorModel model = richEditorPane.update();
+ model.setAddition(fieldName);
+ VanChartRichEditorPane.richEditorAddField(model);
+
+ if (tableFieldNameList.contains(fieldName)) {
+ int index = tableFieldNameList.indexOf(fieldName);
+
+ VanChartFieldButton fieldButton = tableFieldButtonList.get(index);
+ Format fieldFormat = fieldButton.getFormat();
+ DataFunction dataFunction = fieldButton.getDataFunction();
+
+ tableFieldCollection.addFieldDefinition(fieldName, new TableFieldDefinition(fieldName, fieldFormat, dataFunction));
+ }
+ }
+
+ public void populateFieldFormatPane() {
+ VanChartFieldButton fieldButton = this.getSelectedField();
+
+ if (fieldButton == null) {
+ return;
+ }
+
+ Format format = fieldButton.getFormat();
+ IntervalTimeFormat intervalTime = fieldButton.getIntervalTimeFormat();
+ AbstractDataFunction dataFunction = (AbstractDataFunction) fieldButton.getDataFunction();
+
+ boolean showDataFunction = fieldButton.isShowDataFunction();
+ boolean showIntervalTime = fieldButton.isShowIntervalTime();
+
+ fieldAttrPane.populate(format, intervalTime, dataFunction, showDataFunction, showIntervalTime);
+ }
+
+ public void updateFieldFormatPane() {
+ VanChartFieldButton fieldButton = this.getSelectedField();
+
+ if (fieldButton == null) {
+ return;
+ }
+
+ fieldButton.setFormat(fieldAttrPane.updateFormat());
+ fieldButton.setIntervalTimeFormat(fieldAttrPane.updateIntervalTime());
+ fieldButton.setDataFunction(fieldAttrPane.updateDataFunction());
+
+ if (tableFieldNameList.contains(fieldName)) {
+ Format fieldFormat = fieldButton.getFormat();
+ DataFunction dataFunction = fieldButton.getDataFunction();
+
+ tableFieldCollection.addFieldDefinition(fieldName, new TableFieldDefinition(fieldName, fieldFormat, dataFunction));
+ }
+ }
+ };
+ }
+
+ private void registerAttrListener() {
+
+ fieldAttrPane.registerFunctionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ fieldListener.updateFieldFormatPane();
+ }
+ });
+
+ fieldAttrPane.registerFormatListener(new UIObserverListener() {
+ public void doChange() {
+ fieldListener.updateFieldFormatPane();
+ }
+ });
+ }
+
+ private void checkFieldListSelected() {
+ List defaultFieldButtonList = getDefaultFieldButtonList();
+
+ if (defaultFieldButtonList != null && defaultFieldButtonList.size() > 0) {
+ String selected = defaultFieldButtonList.get(0).getFieldName();
+
+ fieldListener.refreshSelectedPane(selected);
+ fieldListener.setGlobalName(selected);
+ fieldListener.populateFieldFormatPane();
+ }
+ }
+
+ public void populate(AttrTooltipContent tooltipContent) {
+ populateDefaultField(tooltipContent);
+ populateTableField(tooltipContent);
+
+ // 初次打开富文本界面选中第一个
+ checkFieldListSelected();
+ }
+
+ public void populateDefaultField(AttrTooltipContent tooltipContent) {
+ populateButtonFormat(categoryNameButton, tooltipContent.getRichTextCategoryFormat());
+ populateButtonFormat(seriesNameButton, tooltipContent.getRichTextSeriesFormat());
+ populateButtonFormat(valueButton, tooltipContent.getRichTextValueFormat());
+ populateButtonFormat(percentButton, tooltipContent.getRichTextPercentFormat());
+ }
+
+ public void populateButtonFormat(VanChartFieldButton button, AttrTooltipFormat format) {
+ if (button == null || format == null) {
+ return;
+ }
+
+ button.setEnable(format.isEnable());
+ button.setFormat(format.getFormat());
+
+ if (button.isShowIntervalTime() && format instanceof AttrTooltipDurationFormat) {
+ button.setIntervalTimeFormat(((AttrTooltipDurationFormat) format).getIntervalTimeFormat());
+ }
+ }
+
+ public void populateTableField(AttrTooltipContent tooltipContent) {
+ TableFieldCollection fieldCollection = tooltipContent.getFieldCollection();
+
+ if (fieldCollection == null) {
+ return;
+ }
+
+ Map fieldDefinitionGroup = fieldCollection.getFieldNameFormulaMap();
+
+ if (fieldDefinitionGroup == null || fieldDefinitionGroup.isEmpty()) {
+ return;
+ }
+
+ this.tableFieldCollection = new TableFieldCollection();
+
+ for (int i = 0, len = tableFieldNameList.size(); i < len; i++) {
+ String fieldName = tableFieldNameList.get(i);
+ VanChartFieldButton fieldButton = tableFieldButtonList.get(i);
+ TableFieldDefinition fieldDefinition = fieldDefinitionGroup.get(fieldName);
+
+ if (fieldDefinitionGroup.containsKey(fieldName)) {
+ Format fieldFormat = fieldDefinition.getFormat();
+ DataFunction dataFunction = fieldDefinition.getDataFunction();
+
+ fieldButton.setFormat(fieldFormat);
+ fieldButton.setDataFunction(dataFunction);
+
+ this.tableFieldCollection.addFieldDefinition(fieldName, new TableFieldDefinition(fieldName, fieldFormat, dataFunction));
+ }
+ }
+ }
+
+ public void update(AttrTooltipContent tooltipContent) {
+ updateDefaultField(tooltipContent);
+ updateTableField(tooltipContent);
+ }
+
+ public void updateDefaultField(AttrTooltipContent tooltipContent) {
+ updateButtonFormat(categoryNameButton, tooltipContent.getRichTextCategoryFormat());
+ updateButtonFormat(seriesNameButton, tooltipContent.getRichTextSeriesFormat());
+ updateButtonFormat(valueButton, tooltipContent.getRichTextValueFormat());
+ updateButtonFormat(percentButton, tooltipContent.getRichTextPercentFormat());
+ }
+
+ public void updateTableField(AttrTooltipContent tooltipContent) {
+ try {
+ tooltipContent.setFieldCollection(this.tableFieldCollection);
+ } catch (Exception e) {
+ FineLoggerFactory.getLogger().error(e.getMessage(), e);
+ }
+ }
+
+ public void updateButtonFormat(VanChartFieldButton button, AttrTooltipFormat format) {
+ if (button == null || format == null) {
+ return;
+ }
+
+ format.setEnable(button.isEnable());
+ format.setFormat(button.getFormat());
+
+ if (button.isShowIntervalTime() && format instanceof AttrTooltipDurationFormat) {
+ ((AttrTooltipDurationFormat) format).setIntervalTimeFormat(button.getIntervalTimeFormat());
+ }
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldListener.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldListener.java
new file mode 100644
index 000000000..62f096663
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartFieldListener.java
@@ -0,0 +1,17 @@
+package com.fr.van.chart.designer.component.richText;
+
+import com.fr.design.event.GlobalNameListener;
+
+public interface VanChartFieldListener extends GlobalNameListener {
+
+ public VanChartFieldButton getSelectedField();
+
+ public void refreshSelectedPane(String fieldName);
+
+ public void addSelectedField(String fieldName, String fieldId);
+
+ public void populateFieldFormatPane();
+
+ public void updateFieldFormatPane();
+
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichEditorModel.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichEditorModel.java
new file mode 100644
index 000000000..83df27c0f
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichEditorModel.java
@@ -0,0 +1,75 @@
+package com.fr.van.chart.designer.component.richText;
+
+import com.fr.plugin.chart.type.TextAlign;
+import com.fr.stable.StringUtils;
+
+public class VanChartRichEditorModel {
+
+ private String content = StringUtils.EMPTY;
+ private boolean auto = true;
+ private String params = StringUtils.EMPTY;
+ private String initParams = StringUtils.EMPTY;
+ private String align = TextAlign.LEFT.getAlign();
+ private String addition = StringUtils.EMPTY;
+
+ public VanChartRichEditorModel() {
+ }
+
+ public VanChartRichEditorModel(String content, boolean auto, String params, String initParams, String align) {
+ this.content = content;
+ this.auto = auto;
+ this.params = params;
+ this.initParams = initParams;
+ this.align = align;
+ this.addition = StringUtils.EMPTY;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public boolean isAuto() {
+ return auto;
+ }
+
+ public void setAuto(boolean auto) {
+ this.auto = auto;
+ }
+
+ public String getParams() {
+ return params;
+ }
+
+ public void setParams(String params) {
+ this.params = params;
+ }
+
+ public String getInitParams() {
+ return initParams;
+ }
+
+ public void setInitParams(String initParams) {
+ this.initParams = initParams;
+ }
+
+ public String getAlign() {
+ return align;
+ }
+
+ public void setAlign(String align) {
+ this.align = align;
+ }
+
+ public String getAddition() {
+ return addition;
+ }
+
+ public void setAddition(String addition) {
+ this.addition = addition;
+ }
+
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichEditorPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichEditorPane.java
new file mode 100644
index 000000000..312c24e84
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichEditorPane.java
@@ -0,0 +1,232 @@
+package com.fr.van.chart.designer.component.richText;
+
+import com.fr.base.TableData;
+import com.fr.base.chart.chartdata.TopDefinitionProvider;
+import com.fr.chart.chartattr.Chart;
+import com.fr.chart.chartattr.Plot;
+import com.fr.chart.chartdata.MoreNameCDDefinition;
+import com.fr.chart.chartdata.OneValueCDDefinition;
+import com.fr.data.TableDataSource;
+import com.fr.data.impl.EmbeddedTableData;
+import com.fr.design.DesignModelAdapter;
+import com.fr.design.DesignerEnvManager;
+import com.fr.design.data.DesignTableDataManager;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.general.ComparatorUtils;
+import com.fr.general.IOUtils;
+import com.fr.log.FineLoggerFactory;
+import com.fr.plugin.chart.base.AttrTooltipRichText;
+import com.fr.plugin.chart.custom.CustomDefinition;
+import com.fr.plugin.chart.custom.type.CustomPlotType;
+import com.fr.plugin.chart.type.TextAlign;
+import com.fr.stable.StringUtils;
+import com.fr.van.chart.designer.PlotFactory;
+import com.teamdev.jxbrowser.chromium.Browser;
+import com.teamdev.jxbrowser.chromium.JSValue;
+import com.teamdev.jxbrowser.chromium.events.ScriptContextAdapter;
+import com.teamdev.jxbrowser.chromium.events.ScriptContextEvent;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+public class VanChartRichEditorPane {
+
+ private static final String PARAMS_SPLITTER = "|";
+
+ private static final String NAME_SPACE = "Pool";
+ private static final String VARIABLE = "data";
+
+ private static final String RICH_EDITOR_HTML = "/com/fr/design/editor/rich_editor.html";
+
+ private static final String REFRESH = "refresh()";
+ private static final String ADD_FIELD = "addField()";
+
+ private static ModernUIPane richEditorPane;
+ private static Browser browser;
+ private static List fieldNames;
+
+ public static List getFieldNames() {
+ return fieldNames;
+ }
+
+ // 更新普通图表中指定plot的数据集字段
+ public static void refreshCommonChartFieldNames(Chart chart) {
+ if (chart == null) {
+ return;
+ }
+
+ Plot plot = chart.getPlot();
+
+ if (plot == null) {
+ return;
+ }
+
+ VanChartRichEditorPane.fieldNames = null;
+
+ if (!PlotFactory.plotSupportAddTableField(plot)) {
+ return;
+ }
+
+ TopDefinitionProvider definition = chart.getFilterDefinition();
+ VanChartRichEditorPane.refreshFieldNames(definition);
+ }
+
+ // 更新组合图表中指定plot的数据集字段
+ public static void refreshCustomChartTableFieldNames(Chart chart, CustomPlotType plotType) {
+ if (chart == null || plotType == null) {
+ return;
+ }
+
+ VanChartRichEditorPane.fieldNames = null;
+ TopDefinitionProvider filterDefinition = chart.getFilterDefinition();
+
+ if (filterDefinition instanceof CustomDefinition) {
+ CustomDefinition customDefinition = (CustomDefinition) filterDefinition;
+ Map definitionProviderMap = customDefinition.getDefinitionProviderMap();
+ VanChartRichEditorPane.refreshFieldNames(definitionProviderMap.get(plotType));
+ }
+ }
+
+ // 更新富文本数据集字段
+ public static void refreshFieldNames(TopDefinitionProvider definition) {
+ if (definition == null) {
+ return;
+ }
+
+ DesignModelAdapter adapter = DesignModelAdapter.getCurrentModelAdapter();
+ TableDataSource tableDataSource = adapter == null ? null : adapter.getBook();
+
+ TableData tableData = null;
+
+ if (ComparatorUtils.equals(definition.getDataDefinitionType(), OneValueCDDefinition.DEFINITION_TYPE)) {
+ OneValueCDDefinition oneValueCDDefinition = (OneValueCDDefinition) definition;
+ tableData = oneValueCDDefinition.getTableData();
+ }
+
+ if (ComparatorUtils.equals(definition.getDataDefinitionType(), MoreNameCDDefinition.DEFINITION_TYPE)) {
+ MoreNameCDDefinition moreNameCDDefinition = (MoreNameCDDefinition) definition;
+ tableData = moreNameCDDefinition.getTableData();
+ }
+
+ if (tableData == null) {
+ return;
+ }
+
+ try {
+ EmbeddedTableData embeddedTableData = DesignTableDataManager.previewTableDataNotNeedInputParameters(tableDataSource,
+ tableData, TableData.RESULT_NOT_NEED, false);
+
+ List fieldNames = DesignTableDataManager.getColumnNamesByTableData(embeddedTableData);
+ VanChartRichEditorPane.fieldNames = fieldNames;
+ } catch (Exception e) {
+ FineLoggerFactory.getLogger().error(e.getMessage(), e);
+ }
+ }
+
+ public static ModernUIPane createRichEditorPane(AttrTooltipRichText richEditor) {
+ VanChartRichEditorModel model = getRichEditorModel(richEditor);
+ return createRichEditorPane(model);
+ }
+
+ public static ModernUIPane createRichEditorPane(VanChartRichEditorModel model) {
+ if (richEditorPane == null) {
+ richEditorPane = initPane(model);
+ } else {
+ richEditorRefresh(model);
+ }
+
+ return richEditorPane;
+ }
+
+ public static void richEditorRefresh(VanChartRichEditorModel model) {
+ if (richEditorPane != null && browser != null) {
+ refresh(browser, model);
+ }
+ }
+
+ public static void richEditorAddField(VanChartRichEditorModel model) {
+ if (richEditorPane != null && browser != null) {
+ addField(browser, model);
+ }
+ }
+
+ public static ModernUIPane initPane(VanChartRichEditorModel model) {
+ return new ModernUIPane.Builder()
+ .prepare(new ScriptContextAdapter() {
+ public void onScriptContextCreated(ScriptContextEvent event) {
+ browser = event.getBrowser();
+ browser.getCacheStorage().clearCache();
+
+ browser.executeJavaScript(IOUtils.readResourceAsString("/com/fr/web/ui/fineui.min.js"));
+ browser.executeJavaScript(IOUtils.readResourceAsString("/com/fr/design/editor/script/i18n.js"));
+ browser.executeJavaScript(generateTransformI18nJS());
+ browser.executeJavaScript(IOUtils.readResourceAsString("/com/fr/web/ui/materials.min.js"));
+
+ JSValue ns = browser.executeJavaScriptAndReturnValue("window." + NAME_SPACE);
+ ns.asObject().setProperty(VARIABLE, model);
+ }
+ })
+ .withEMB(RICH_EDITOR_HTML)
+ .namespace(NAME_SPACE).build();
+ }
+
+ public static void refresh(Browser browser, VanChartRichEditorModel model) {
+ stateChange(browser, model, REFRESH);
+ }
+
+ public static void addField(Browser browser, VanChartRichEditorModel model) {
+ stateChange(browser, model, ADD_FIELD);
+ }
+
+ public static void stateChange(Browser browser, VanChartRichEditorModel model, String trigger) {
+ JSValue ns = browser.executeJavaScriptAndReturnValue("window." + NAME_SPACE);
+ ns.asObject().setProperty(VARIABLE, model);
+ browser.executeJavaScript("window." + NAME_SPACE + "." + trigger);
+ }
+
+ public static VanChartRichEditorModel getRichEditorModel(AttrTooltipRichText richText) {
+ Map paramsMap = richText.getParams();
+ StringBuilder paramsStr = new StringBuilder(StringUtils.EMPTY);
+
+ if (paramsMap != null) {
+ for (Map.Entry entry : paramsMap.entrySet()) {
+ paramsStr.append(entry.getKey()).append(":").append(entry.getValue());
+ paramsStr.append(PARAMS_SPLITTER);
+ }
+ }
+
+ int len = paramsStr.length();
+
+ if (len > 0) {
+ paramsStr.deleteCharAt(len - 1);
+ }
+
+ String content = richText.getContent();
+ String initParams = StringUtils.EMPTY;
+ String align = StringUtils.EMPTY;
+
+ if (content.contains("data-id") && !content.contains("class")) {
+ initParams = richText.getInitParamsContent();
+
+ String left = TextAlign.LEFT.getAlign();
+ String center = TextAlign.CENTER.getAlign();
+
+ align = content.contains(left) ? left : center;
+ }
+
+ return new VanChartRichEditorModel(content, richText.isAuto(), paramsStr.toString(), initParams, align);
+ }
+
+ public static String generateTransformI18nJS() {
+ String language = "zh_CN";
+
+ Locale locale = DesignerEnvManager.getEnvManager().getLanguage();
+
+ if (locale != null) {
+ language = locale.toString();
+ }
+
+ return "!(function () { window.transformI18n && window.transformI18n('" + language + "' || 'zh_CN'); }());";
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorDialog.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java
similarity index 65%
rename from designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorDialog.java
rename to designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java
index a13208df5..993c4bc2e 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorDialog.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextDialog.java
@@ -1,4 +1,4 @@
-package com.fr.van.chart.designer.component;
+package com.fr.van.chart.designer.component.richText;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane;
@@ -8,17 +8,17 @@ import com.fr.design.utils.gui.GUICoreUtils;
import java.awt.Dimension;
import java.awt.Frame;
-public class VanChartRichEditorDialog extends BasicDialog {
+public class VanChartRichTextDialog extends BasicDialog {
- public static final Dimension DEFAULT = new Dimension(960, 600);
+ public static final Dimension DEFAULT = new Dimension(960, 800);
- public VanChartRichEditorDialog(Frame parent, BasicPane pane) {
+ public VanChartRichTextDialog(Frame parent, BasicPane pane) {
super(parent, pane);
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
new file mode 100644
index 000000000..b6bce1145
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/richText/VanChartRichTextPane.java
@@ -0,0 +1,97 @@
+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;
+import com.fr.stable.StringUtils;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+
+// 标签提示中的富文本面板,包含字段设置和富文本编辑器
+public class VanChartRichTextPane extends BasicBeanPane {
+
+ private static final int FIELD_PANE_W = 470;
+ private static final int FIELD_PANE_H = 270;
+
+ private static final int RICH_EDITOR_W = 940;
+ private static final int RICH_EDITOR_H = 460;
+
+ private VanChartFieldListPane fieldListPane;
+ private VanChartFieldAttrPane fieldAttrPane;
+
+ public VanChartRichTextPane(ModernUIPane richEditor) {
+ fieldAttrPane = new VanChartFieldAttrPane();
+ fieldListPane = createFieldListPane(fieldAttrPane, richEditor);
+
+ this.setLayout(new BorderLayout());
+ this.add(createFieldContentPane(), BorderLayout.CENTER);
+ this.add(createRichEditorPane(richEditor), BorderLayout.SOUTH);
+ }
+
+ public VanChartFieldListPane getFieldListPane() {
+ return fieldListPane;
+ }
+
+ private JPanel createFieldContentPane() {
+ JPanel fieldPane = new JPanel();
+ fieldPane.setLayout(FRGUIPaneFactory.create2ColumnGridLayout());
+
+ // 新增字段目录
+ JPanel fieldListContent = new JPanel();
+ fieldListContent.setLayout(new BorderLayout());
+ fieldListContent.add(fieldListPane, BorderLayout.NORTH);
+
+ JScrollPane fieldListScrollPane = new JScrollPane(fieldListContent);
+ fieldListScrollPane.setPreferredSize(new Dimension(FIELD_PANE_W, FIELD_PANE_H));
+ fieldListScrollPane.setHorizontalScrollBar(null);
+ 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(Toolkit.i18nText("Fine-Design_Report_Field_Setting")));
+
+ fieldPane.add(fieldListScrollPane);
+ fieldPane.add(fieldAttrScrollPane);
+
+ return fieldPane;
+ }
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ private JPanel createRichEditorPane(JPanel richEditor) {
+ JPanel richEditorPane = new JPanel();
+
+ richEditorPane.setLayout(new BorderLayout());
+ richEditorPane.setPreferredSize(new Dimension(RICH_EDITOR_W, RICH_EDITOR_H));
+ richEditorPane.add(richEditor, BorderLayout.CENTER);
+
+ return richEditorPane;
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return new AttrTooltipContent();
+ }
+
+ public void populateBean(AttrTooltipContent tooltipContent) {
+ fieldListPane.populate(tooltipContent);
+ }
+
+ public AttrTooltipContent updateBean() {
+ AttrTooltipContent content = getInitialTooltipContent();
+ fieldListPane.update(content);
+ return content;
+ }
+
+ protected String title4PopupWindow() {
+ return StringUtils.EMPTY;
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/RefreshTooltipContentPaneWithOutSeries.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/RefreshTooltipContentPaneWithOutSeries.java
index ca7479cc0..48d2e55cb 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/RefreshTooltipContentPaneWithOutSeries.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/RefreshTooltipContentPaneWithOutSeries.java
@@ -29,14 +29,6 @@ public class RefreshTooltipContentPaneWithOutSeries extends TooltipContentPaneWi
setChangedPercentFormatPane(new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane));
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- super.initRichTextFormatPane(parent, showOnPane);
-
- setRichTextChangedValueFormatPane(new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextChangedPercentFormatPane(new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane));
- }
-
protected double[] getRowSize(double p){
return new double[]{p,p,p,p,p};
}
@@ -50,14 +42,4 @@ public class RefreshTooltipContentPaneWithOutSeries extends TooltipContentPaneWi
new Component[]{getChangedPercentFormatPane(),null},
};
}
-
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextCategoryNameFormatPane(), null},
- new Component[]{getRichTextValueFormatPane(), null},
- new Component[]{getRichTextChangedValueFormatPane(), null},
- new Component[]{getRichTextPercentFormatPane(), null},
- new Component[]{getRichTextChangedPercentFormatPane(), null}
- };
- }
}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/TooltipContentPaneWithOutSeries.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/TooltipContentPaneWithOutSeries.java
index 8724429f3..ab2f0a179 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/TooltipContentPaneWithOutSeries.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/TooltipContentPaneWithOutSeries.java
@@ -1,10 +1,17 @@
package com.fr.van.chart.designer.component.tooltip;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
-import com.fr.plugin.chart.base.AttrTooltipRichText;
+import com.fr.plugin.chart.base.format.AttrTooltipCategoryFormat;
import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
-import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -33,31 +40,33 @@ public class TooltipContentPaneWithOutSeries extends VanChartTooltipContentPane
};
}
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextCategoryNameFormatPane(), null},
- new Component[]{getRichTextValueFormatPane(), null},
- new Component[]{getRichTextPercentFormatPane(), null}
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartFieldListPaneWithOutSeries(fieldAttrPane, richEditor);
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
};
}
- protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
- VanChartFormatPaneWithoutCheckBox[] formatPaneGroup = new VanChartFormatPaneWithoutCheckBox[]{
- getRichTextCategoryNameFormatPane(),
- getRichTextValueFormatPane(),
- getRichTextPercentFormatPane()
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Category_Use_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Percent")
};
+ }
- AttrTooltipFormat[] formatGroup = new AttrTooltipFormat[]{
- attrTooltipContent.getRichTextCategoryFormat(),
- attrTooltipContent.getRichTextValueFormat(),
- attrTooltipContent.getRichTextPercentFormat()
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipCategoryFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
};
-
- setRichTextAttr(new AttrTooltipRichText());
- populateRichTextFormat(formatPaneGroup, formatGroup);
- populateRichText(attrTooltipContent.getRichTextAttr());
-
- checkRichEditorState(attrTooltipContent);
}
}
\ No newline at end of file
diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/VanChartFieldListPaneWithOutSeries.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/VanChartFieldListPaneWithOutSeries.java
new file mode 100644
index 000000000..c651dbf89
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/VanChartFieldListPaneWithOutSeries.java
@@ -0,0 +1,34 @@
+package com.fr.van.chart.designer.component.tooltip;
+
+import com.fr.design.ui.ModernUIPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+import javax.swing.JPanel;
+import java.util.ArrayList;
+import java.util.List;
+
+public class VanChartFieldListPaneWithOutSeries extends VanChartFieldListPane {
+
+ public VanChartFieldListPaneWithOutSeries(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void addDefaultFieldButton(JPanel fieldPane) {
+ fieldPane.add(getCategoryNameButton());
+ fieldPane.add(getValueButton());
+ fieldPane.add(getPercentButton());
+ }
+
+ protected List getDefaultFieldButtonList() {
+ List fieldButtonList = new ArrayList<>();
+
+ fieldButtonList.add(getCategoryNameButton());
+ fieldButtonList.add(getValueButton());
+ fieldButtonList.add(getPercentButton());
+
+ return fieldButtonList;
+ }
+}
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/VanChartStylePane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartStylePane.java
index 32a4f8e54..53619765c 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartStylePane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartStylePane.java
@@ -5,6 +5,7 @@ import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.plugin.chart.attr.plot.VanChartAxisPlot;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorPane;
import com.fr.van.chart.designer.style.axis.VanChartAxisPane;
import com.fr.van.chart.designer.style.background.VanChartAreaPane;
import com.fr.van.chart.designer.style.datasheet.VanChartDataSheetPane;
@@ -75,4 +76,8 @@ public class VanChartStylePane extends ChartStylePane {
protected void addVanChartTooltipPane(List paneList) {
paneList.add(new VanChartTooltipPane(VanChartStylePane.this));
}
+
+ public void refreshTableFieldNames() {
+ VanChartRichEditorPane.refreshCommonChartFieldNames(getChart());
+ }
}
\ No newline at end of file
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 richEditorPane) {
- protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
- VanChartFormatPaneWithoutCheckBox[] formatPaneGroup = new VanChartFormatPaneWithoutCheckBox[]{
- getRichTextSeriesNameFormatPane(),
- getRichTextValueFormatPane(),
- getRichTextPercentFormatPane()
- };
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartFunnelRichTextFieldListPane(fieldAttrPane, richEditor);
+ }
- AttrTooltipFormat[] formatGroup = new AttrTooltipFormat[]{
- attrTooltipContent.getRichTextSeriesFormat(),
- attrTooltipContent.getRichTextValueFormat(),
- attrTooltipContent.getRichTextPercentFormat()
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
};
+ }
- setRichTextAttr(new AttrTooltipRichText());
- populateRichTextFormat(formatPaneGroup, formatGroup);
- populateRichText(attrTooltipContent.getRichTextAttr());
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Value_Conversion")
+ };
+ }
- checkRichEditorState(attrTooltipContent);
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipNameFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
+ };
}
protected AttrTooltipContent createAttrTooltip() {
diff --git a/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelRefreshTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelRefreshTooltipContentPane.java
index b7f817eb3..bb3b8bea3 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelRefreshTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelRefreshTooltipContentPane.java
@@ -29,14 +29,6 @@ public class VanChartFunnelRefreshTooltipContentPane extends VanChartFunnelToolt
setChangedPercentFormatPane(new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane));
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- super.initRichTextFormatPane(parent, showOnPane);
-
- setRichTextChangedValueFormatPane(new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextChangedPercentFormatPane(new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane));
- }
-
protected double[] getRowSize(double p){
return new double[]{p,p,p,p,p};
}
@@ -50,14 +42,4 @@ public class VanChartFunnelRefreshTooltipContentPane extends VanChartFunnelToolt
new Component[]{getChangedPercentFormatPane(), null},
};
}
-
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{getRichTextValueFormatPane(), null},
- new Component[]{getRichTextChangedValueFormatPane(), null},
- new Component[]{getRichTextPercentFormatPane(), null},
- new Component[]{getRichTextChangedPercentFormatPane(), null}
- };
- }
}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelRichTextFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelRichTextFieldListPane.java
new file mode 100644
index 000000000..c63f112a7
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelRichTextFieldListPane.java
@@ -0,0 +1,62 @@
+package com.fr.van.chart.funnel.designer.style;
+
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.format.AttrTooltipCategoryFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipNameFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListener;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+import javax.swing.JPanel;
+import java.util.ArrayList;
+import java.util.List;
+
+public class VanChartFunnelRichTextFieldListPane extends VanChartFieldListPane {
+
+ public VanChartFunnelRichTextFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void initDefaultFieldButton() {
+ VanChartFieldListener fieldListener = getFieldListener();
+
+ VanChartFieldButton categoryNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Category_Use_Name"),
+ new AttrTooltipCategoryFormat(), false, fieldListener);
+
+ VanChartFieldButton seriesNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ new AttrTooltipNameFormat(), false, fieldListener);
+
+ VanChartFieldButton valueButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ new AttrTooltipValueFormat(), false, fieldListener);
+
+ VanChartFieldButton percentButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Value_Conversion"),
+ new AttrTooltipPercentFormat(), false, fieldListener);
+
+ setCategoryNameButton(categoryNameButton);
+ setSeriesNameButton(seriesNameButton);
+ setValueButton(valueButton);
+ setPercentButton(percentButton);
+ }
+
+ protected void addDefaultFieldButton(JPanel fieldPane) {
+ fieldPane.add(getSeriesNameButton());
+ fieldPane.add(getValueButton());
+ fieldPane.add(getPercentButton());
+ }
+
+ protected List getDefaultFieldButtonList() {
+ List fieldButtonList = new ArrayList<>();
+
+ fieldButtonList.add(getSeriesNameButton());
+ fieldButtonList.add(getValueButton());
+ fieldButtonList.add(getPercentButton());
+
+ return fieldButtonList;
+ }
+
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelTooltipContentPane.java
index 247194ec4..e8c741b14 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelTooltipContentPane.java
@@ -1,17 +1,20 @@
package com.fr.van.chart.funnel.designer.style;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
-import com.fr.plugin.chart.base.AttrTooltipRichText;
import com.fr.plugin.chart.base.format.AttrTooltipFormat;
import com.fr.plugin.chart.base.format.AttrTooltipNameFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
-import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -37,14 +40,6 @@ public class VanChartFunnelTooltipContentPane extends VanChartTooltipContentPane
};
}
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{getRichTextValueFormatPane(), null},
- new Component[]{getRichTextPercentFormatPane(), null}
- };
- }
-
@Override
protected void initFormatPane(VanChartStylePane parent, JPanel showOnPane) {
setCategoryNameFormatPane(new CategoryNameFormatPaneWithCheckBox(parent, showOnPane));
@@ -53,32 +48,34 @@ public class VanChartFunnelTooltipContentPane extends VanChartTooltipContentPane
setPercentFormatPane(new FunnelPercentFormatPaneWithCheckBox(parent, showOnPane));
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- setRichTextCategoryNameFormatPane(new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextSeriesNameFormatPane(new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextValueFormatPane(new ValueFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextPercentFormatPane(new FunnelPercentFormatPaneWithoutCheckBox(parent, showOnPane));
- }
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
- protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
- VanChartFormatPaneWithoutCheckBox[] formatPaneGroup = new VanChartFormatPaneWithoutCheckBox[]{
- getRichTextSeriesNameFormatPane(),
- getRichTextValueFormatPane(),
- getRichTextPercentFormatPane()
- };
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartFunnelRichTextFieldListPane(fieldAttrPane, richEditor);
+ }
- AttrTooltipFormat[] formatGroup = new AttrTooltipFormat[]{
- attrTooltipContent.getRichTextSeriesFormat(),
- attrTooltipContent.getRichTextValueFormat(),
- attrTooltipContent.getRichTextPercentFormat()
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
};
+ }
- setRichTextAttr(new AttrTooltipRichText());
- populateRichTextFormat(formatPaneGroup, formatGroup);
- populateRichText(attrTooltipContent.getRichTextAttr());
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Value_Conversion")
+ };
+ }
- checkRichEditorState(attrTooltipContent);
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipNameFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
+ };
}
protected AttrTooltipContent createAttrTooltip() {
diff --git a/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/axis/GanttAxisStylePane.java b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/axis/GanttAxisStylePane.java
index 8ff6786ba..fe0d2d677 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/axis/GanttAxisStylePane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/axis/GanttAxisStylePane.java
@@ -2,6 +2,7 @@ package com.fr.van.chart.gantt.designer.style.axis;
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.ilable.UILabel;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
@@ -55,7 +56,7 @@ public class GanttAxisStylePane 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/gantt/designer/style/tooltip/VanChartGanttRichTextFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/tooltip/VanChartGanttRichTextFieldListPane.java
new file mode 100644
index 000000000..6332c6757
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/tooltip/VanChartGanttRichTextFieldListPane.java
@@ -0,0 +1,107 @@
+package com.fr.van.chart.gantt.designer.style.tooltip;
+
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.AttrTooltipContent;
+import com.fr.plugin.chart.base.format.AttrTooltipDurationFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipEndTimeFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipProcessesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipProgressFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipStartTimeFormat;
+import com.fr.plugin.chart.gantt.attr.AttrGanttTooltipContent;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListener;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+import javax.swing.JPanel;
+import java.util.ArrayList;
+import java.util.List;
+
+public class VanChartGanttRichTextFieldListPane extends VanChartFieldListPane {
+
+ private VanChartFieldButton richTextProcessesFormatPane;
+ private VanChartFieldButton richTextStartTimeFormatPane;
+ private VanChartFieldButton richTextEndTimeFormatPane;
+ private VanChartFieldButton richTextDurationFormatPane;
+ private VanChartFieldButton richTextProgressFormatPane;
+
+ public VanChartGanttRichTextFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void initDefaultFieldButton() {
+ VanChartFieldListener listener = getFieldListener();
+
+ richTextProcessesFormatPane = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Project_Name"),
+ new AttrTooltipProcessesFormat(), false, listener);
+
+ setSeriesNameButton(new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ new AttrTooltipSeriesFormat(), false, listener));
+
+ richTextStartTimeFormatPane = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Start_Time"),
+ new AttrTooltipStartTimeFormat(), false, listener);
+
+ richTextEndTimeFormatPane = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_End_Time"),
+ new AttrTooltipEndTimeFormat(), false, listener);
+
+ richTextDurationFormatPane = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Duration_Time"),
+ new AttrTooltipDurationFormat(), false, true, listener);
+
+ richTextProgressFormatPane = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Process"),
+ new AttrTooltipProgressFormat(), false, listener);
+ }
+
+ protected void addDefaultFieldButton(JPanel fieldPane) {
+ fieldPane.add(richTextProcessesFormatPane);
+ fieldPane.add(getSeriesNameButton());
+ fieldPane.add(richTextStartTimeFormatPane);
+ fieldPane.add(richTextEndTimeFormatPane);
+ fieldPane.add(richTextDurationFormatPane);
+ fieldPane.add(richTextProgressFormatPane);
+ }
+
+ protected List getDefaultFieldButtonList() {
+ List fieldButtonList = new ArrayList<>();
+
+ fieldButtonList.add(richTextProcessesFormatPane);
+ fieldButtonList.add(getSeriesNameButton());
+ fieldButtonList.add(richTextStartTimeFormatPane);
+ fieldButtonList.add(richTextEndTimeFormatPane);
+ fieldButtonList.add(richTextDurationFormatPane);
+ fieldButtonList.add(richTextProgressFormatPane);
+
+ return fieldButtonList;
+ }
+
+ public void populateDefaultField(AttrTooltipContent tooltipContent) {
+ super.populateDefaultField(tooltipContent);
+
+ if (tooltipContent instanceof AttrGanttTooltipContent) {
+ AttrGanttTooltipContent gantt = (AttrGanttTooltipContent) tooltipContent;
+
+ populateButtonFormat(richTextProcessesFormatPane, gantt.getRichTextProcessesFormat());
+ populateButtonFormat(richTextStartTimeFormatPane, gantt.getRichTextStartTimeFormat());
+ populateButtonFormat(richTextEndTimeFormatPane, gantt.getRichTextEndTimeFormat());
+ populateButtonFormat(richTextDurationFormatPane, gantt.getRichTextDurationFormat());
+ populateButtonFormat(richTextProgressFormatPane, gantt.getRichTextProgressFormat());
+ }
+ }
+
+ public void updateDefaultField(AttrTooltipContent tooltipContent) {
+ super.updateDefaultField(tooltipContent);
+
+ if (tooltipContent instanceof AttrGanttTooltipContent) {
+ AttrGanttTooltipContent gantt = (AttrGanttTooltipContent) tooltipContent;
+
+ updateButtonFormat(richTextProcessesFormatPane, gantt.getRichTextProcessesFormat());
+ updateButtonFormat(richTextStartTimeFormatPane, gantt.getRichTextStartTimeFormat());
+ updateButtonFormat(richTextEndTimeFormatPane, gantt.getRichTextEndTimeFormat());
+ updateButtonFormat(richTextDurationFormatPane, gantt.getRichTextDurationFormat());
+ updateButtonFormat(richTextProgressFormatPane, gantt.getRichTextProgressFormat());
+ }
+ }
+
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/tooltip/VanChartGanttTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/tooltip/VanChartGanttTooltipContentPane.java
index d724deff5..6868a0c87 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/tooltip/VanChartGanttTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/tooltip/VanChartGanttTooltipContentPane.java
@@ -1,10 +1,11 @@
package com.fr.van.chart.gantt.designer.style.tooltip;
import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
-import com.fr.plugin.chart.base.AttrTooltipRichText;
import com.fr.plugin.chart.base.format.AttrTooltipDurationFormat;
import com.fr.plugin.chart.base.format.AttrTooltipEndTimeFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipFormat;
import com.fr.plugin.chart.base.format.AttrTooltipProcessesFormat;
import com.fr.plugin.chart.base.format.AttrTooltipProgressFormat;
import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
@@ -12,14 +13,15 @@ import com.fr.plugin.chart.base.format.AttrTooltipStartTimeFormat;
import com.fr.plugin.chart.gantt.attr.AttrGanttTooltipContent;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
import java.awt.Component;
-import java.util.Map;
/**
* Created by hufan on 2017/1/13.
@@ -31,12 +33,6 @@ public class VanChartGanttTooltipContentPane extends VanChartTooltipContentPane
private VanChartFormatComBoxWithCheckBox durationFormatPane;
private VanChartFormatPaneWithCheckBox progressFormatPane;
- private VanChartFormatPaneWithoutCheckBox richTextProcessesFormatPane;
- private VanChartDateFormatPaneWithoutCheckBox richTextStartTimeFormatPane;
- private VanChartDateFormatPaneWithoutCheckBox richTextEndTimeFormatPane;
- private VanChartFormatComBoxWithoutCheckBox richTextDurationFormatPane;
- private VanChartFormatPaneWithoutCheckBox richTextProgressFormatPane;
-
public VanChartGanttTooltipContentPane(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
@@ -70,28 +66,39 @@ public class VanChartGanttTooltipContentPane extends VanChartTooltipContentPane
};
}
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- richTextProcessesFormatPane = new VanChartFormatPaneWithoutCheckBox(parent, showOnPane){
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Project_Name");
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartGanttRichTextFieldListPane(fieldAttrPane, richEditor);
}
- };
- setRichTextSeriesNameFormatPane(new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane));
- richTextStartTimeFormatPane = new VanChartDateFormatPaneWithoutCheckBox(parent, showOnPane){
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Start_Time");
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
}
};
- richTextEndTimeFormatPane = new VanChartDateFormatPaneWithoutCheckBox(parent, showOnPane){
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_End_Time");
- }
+ }
+
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Project_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Start_Time"),
+ Toolkit.i18nText("Fine-Design_Chart_End_Time"),
+ Toolkit.i18nText("Fine-Design_Chart_Duration_Time"),
+ Toolkit.i18nText("Fine-Design_Chart_Process")
};
- richTextDurationFormatPane = new VanChartFormatComBoxWithoutCheckBox();
- richTextProgressFormatPane = new VanChartFormatPaneWithoutCheckBox(parent, showOnPane){
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Process");
- }
+ }
+
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipProcessesFormat(),
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipStartTimeFormat(),
+ new AttrTooltipEndTimeFormat(),
+ new AttrTooltipDurationFormat(),
+ new AttrTooltipProgressFormat()
};
}
@@ -106,17 +113,6 @@ public class VanChartGanttTooltipContentPane extends VanChartTooltipContentPane
};
}
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{richTextProcessesFormatPane,null},
- new Component[]{getRichTextSeriesNameFormatPane(),null},
- new Component[]{richTextStartTimeFormatPane,null},
- new Component[]{richTextEndTimeFormatPane,null},
- new Component[]{richTextDurationFormatPane, null},
- new Component[]{richTextProgressFormatPane, null}
- };
- }
-
protected double[] getRowSize(double p){
return new double[]{p,p,p,p,p,p};
}
@@ -135,43 +131,6 @@ public class VanChartGanttTooltipContentPane extends VanChartTooltipContentPane
}
}
- protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
- if(attrTooltipContent instanceof AttrGanttTooltipContent){
- setRichTextAttr(new AttrTooltipRichText());
-
- AttrGanttTooltipContent ganttTooltipContent = (AttrGanttTooltipContent) attrTooltipContent;
- Map params = getRichTextAttr().getParams();
-
- AttrTooltipProcessesFormat processesFormat = ganttTooltipContent.getRichTextProcessesFormat();
- richTextProcessesFormatPane.populate(processesFormat);
- richTextProcessesFormatPane.updateFormatParams(params, processesFormat.getJs());
-
- AttrTooltipSeriesFormat seriesFormat = ganttTooltipContent.getRichTextSeriesFormat();
- getRichTextSeriesNameFormatPane().populate(seriesFormat);
- getRichTextSeriesNameFormatPane().updateFormatParams(params, seriesFormat.getJs());
-
- AttrTooltipStartTimeFormat startTimeFormat = ganttTooltipContent.getRichTextStartTimeFormat();
- richTextStartTimeFormatPane.populate(startTimeFormat);
- richTextStartTimeFormatPane.updateFormatParams(params, startTimeFormat.getJs());
-
- AttrTooltipEndTimeFormat endTimeFormat = ganttTooltipContent.getRichTextEndTimeFormat();
- richTextEndTimeFormatPane.populate(endTimeFormat);
- richTextEndTimeFormatPane.updateFormatParams(params, endTimeFormat.getJs());
-
- AttrTooltipDurationFormat durationFormat = ganttTooltipContent.getRichTextDurationFormat();
- richTextDurationFormatPane.populate(durationFormat);
- richTextDurationFormatPane.updateFormatParams(params, durationFormat.getJs());
-
- AttrTooltipProgressFormat progressFormat = ganttTooltipContent.getRichTextProgressFormat();
- richTextProgressFormatPane.populate(progressFormat);
- richTextProgressFormatPane.updateFormatParams(params, progressFormat.getJs());
-
- populateRichText(attrTooltipContent.getRichTextAttr());
-
- checkRichEditorState(attrTooltipContent);
- }
- }
-
protected void updateFormatPane(AttrTooltipContent attrTooltipContent) {
if (attrTooltipContent instanceof AttrGanttTooltipContent){
AttrGanttTooltipContent ganttTooltipContent = (AttrGanttTooltipContent) attrTooltipContent;
@@ -184,16 +143,18 @@ public class VanChartGanttTooltipContentPane extends VanChartTooltipContentPane
}
}
- protected void updateRichEditor(AttrTooltipContent attrTooltipContent) {
- if(attrTooltipContent instanceof AttrGanttTooltipContent) {
- AttrGanttTooltipContent ganttTooltipContent = (AttrGanttTooltipContent) attrTooltipContent;
+ protected void updateTooltipFormat(AttrTooltipContent target, AttrTooltipContent source) {
+ super.updateTooltipFormat(target, source);
+
+ if (target instanceof AttrGanttTooltipContent && source instanceof AttrGanttTooltipContent) {
+ AttrGanttTooltipContent targetGantt = (AttrGanttTooltipContent) target;
+ AttrGanttTooltipContent sourceGantt = (AttrGanttTooltipContent) source;
- richTextProcessesFormatPane.update(ganttTooltipContent.getRichTextProcessesFormat());
- getRichTextSeriesNameFormatPane().update(ganttTooltipContent.getRichTextSeriesFormat());
- richTextStartTimeFormatPane.update(ganttTooltipContent.getRichTextStartTimeFormat());
- richTextEndTimeFormatPane.update(ganttTooltipContent.getRichTextEndTimeFormat());
- richTextDurationFormatPane.update(ganttTooltipContent.getRichTextDurationFormat());
- richTextProgressFormatPane.update(ganttTooltipContent.getRichTextProgressFormat());
+ targetGantt.setRichTextProcessesFormat(sourceGantt.getRichTextProcessesFormat());
+ targetGantt.setRichTextStartTimeFormat(sourceGantt.getRichTextStartTimeFormat());
+ targetGantt.setRichTextEndTimeFormat(sourceGantt.getRichTextEndTimeFormat());
+ targetGantt.setRichTextDurationFormat(sourceGantt.getRichTextDurationFormat());
+ targetGantt.setRichTextProgressFormat(sourceGantt.getRichTextProgressFormat());
}
}
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..a2adff77a 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};
@@ -442,7 +443,7 @@ public class VanChartMapSeriesPane extends VanChartColorValueSeriesPane {
//不透明度
private JPanel createPointAlphaPane() {
- pointAlphaPane = new UINumberDragPane(0, 100);
+ pointAlphaPane = new UINumberDragPaneWithPercent(0, 100);
return TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Report_Alpha"), pointAlphaPane);
}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/VanChartMapRichTextFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/VanChartMapRichTextFieldListPane.java
new file mode 100644
index 000000000..91e1817ef
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/VanChartMapRichTextFieldListPane.java
@@ -0,0 +1,41 @@
+package com.fr.van.chart.map.designer.style;
+
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.format.AttrTooltipAreaNameFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListener;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+public class VanChartMapRichTextFieldListPane extends VanChartFieldListPane {
+
+ public VanChartMapRichTextFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void initDefaultFieldButton() {
+ VanChartFieldListener fieldListener = getFieldListener();
+
+ VanChartFieldButton categoryNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Area_Name"),
+ new AttrTooltipAreaNameFormat(), false, fieldListener);
+
+ VanChartFieldButton seriesNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ new AttrTooltipSeriesFormat(), false, fieldListener);
+
+ VanChartFieldButton valueButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ new AttrTooltipValueFormat(), false, fieldListener);
+
+ VanChartFieldButton percentButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Percent"),
+ new AttrTooltipPercentFormat(), false, fieldListener);
+
+ setCategoryNameButton(categoryNameButton);
+ setSeriesNameButton(seriesNameButton);
+ setValueButton(valueButton);
+ setPercentButton(percentButton);
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/label/VanChartMapLabelContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/label/VanChartMapLabelContentPane.java
index 084953c99..ce3e34ba7 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/label/VanChartMapLabelContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/map/designer/style/label/VanChartMapLabelContentPane.java
@@ -1,19 +1,26 @@
package com.fr.van.chart.map.designer.style.label;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.base.format.AttrTooltipAreaNameFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipFormat;
import com.fr.plugin.chart.base.format.AttrTooltipMapValueFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.plugin.chart.type.TextAlign;
import com.fr.van.chart.designer.component.VanChartLabelContentPane;
import com.fr.van.chart.designer.component.format.MapAreaNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.MapAreaNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
+import com.fr.van.chart.map.designer.style.VanChartMapRichTextFieldListPane;
import javax.swing.JPanel;
@@ -21,6 +28,7 @@ import javax.swing.JPanel;
* Created by Mitisky on 16/5/20.
*/
public class VanChartMapLabelContentPane extends VanChartLabelContentPane {
+
public VanChartMapLabelContentPane(VanChartStylePane parent, JPanel showOnPane, boolean inCondition) {
super(parent, showOnPane, inCondition);
}
@@ -33,12 +41,36 @@ public class VanChartMapLabelContentPane extends VanChartLabelContentPane {
setPercentFormatPane(new PercentFormatPaneWithCheckBox(parent, showOnPane));
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- setRichTextCategoryNameFormatPane(new MapAreaNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextSeriesNameFormatPane(new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextValueFormatPane(new ValueFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextPercentFormatPane(new PercentFormatPaneWithoutCheckBox(parent, showOnPane));
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartMapRichTextFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
+ };
+ }
+
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Area_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Percent")
+ };
+ }
+
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipAreaNameFormat(),
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
+ };
}
@Override
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 745c3a79a..e5040c9df 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;
@@ -10,6 +11,7 @@ import com.fr.plugin.chart.base.VanChartAttrMarker;
import com.fr.plugin.chart.marker.type.MarkerType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
+import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
@@ -19,7 +21,7 @@ public class VanChartMapAnchorMarkerPane extends BasicBeanPane richEditorPane) {
+
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartMapRichTextFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
+ };
+ }
+
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Area_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Percent")
+ };
+ }
+
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipAreaNameFormat(),
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
+ };
}
@Override
diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartCurvePane.java b/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartCurvePane.java
index df14ff555..83fb0249d 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartCurvePane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartCurvePane.java
@@ -2,8 +2,10 @@ package com.fr.van.chart.map.line;
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.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;
@@ -29,9 +31,9 @@ public class VanChartCurvePane 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/map/line/VanChartLineMapRichTextFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapRichTextFieldListPane.java
new file mode 100644
index 000000000..0a1e2bbb6
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapRichTextFieldListPane.java
@@ -0,0 +1,41 @@
+package com.fr.van.chart.map.line;
+
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipStartAndEndNameFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListener;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+public class VanChartLineMapRichTextFieldListPane extends VanChartFieldListPane {
+
+ public VanChartLineMapRichTextFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void initDefaultFieldButton() {
+ VanChartFieldListener fieldListener = getFieldListener();
+
+ VanChartFieldButton categoryNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Start_And_End"),
+ new AttrTooltipStartAndEndNameFormat(), false, fieldListener);
+
+ VanChartFieldButton seriesNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ new AttrTooltipSeriesFormat(), false, fieldListener);
+
+ VanChartFieldButton valueButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ new AttrTooltipValueFormat(), false, fieldListener);
+
+ VanChartFieldButton percentButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Percent"),
+ new AttrTooltipPercentFormat(), false, fieldListener);
+
+ setCategoryNameButton(categoryNameButton);
+ setSeriesNameButton(seriesNameButton);
+ setValueButton(valueButton);
+ setPercentButton(percentButton);
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapTooltipContentPane.java
index 9dbc696a6..04ab53b6a 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapTooltipContentPane.java
@@ -1,15 +1,21 @@
package com.fr.van.chart.map.line;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
+import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
import com.fr.plugin.chart.base.format.AttrTooltipStartAndEndNameFormat;
import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -30,12 +36,36 @@ public class VanChartLineMapTooltipContentPane extends VanChartTooltipContentPan
setPercentFormatPane(new PercentFormatPaneWithCheckBox(parent, showOnPane));
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- setRichTextCategoryNameFormatPane(new StartAndEndNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextSeriesNameFormatPane(new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextValueFormatPane(new ValueFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextPercentFormatPane(new PercentFormatPaneWithoutCheckBox(parent, showOnPane));
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartLineMapRichTextFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
+ };
+ }
+
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Start_And_End"),
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Percent")
+ };
+ }
+
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipStartAndEndNameFormat(),
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
+ };
}
@Override
diff --git a/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieLabelContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieLabelContentPane.java
index 73e766afc..b62655a26 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieLabelContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieLabelContentPane.java
@@ -1,13 +1,21 @@
package com.fr.van.chart.multilayer.style;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
+import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.plugin.chart.multilayer.style.AttrTooltipMultiLevelNameFormat;
import com.fr.plugin.chart.type.TextAlign;
import com.fr.van.chart.designer.component.VanChartLabelContentPane;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -28,12 +36,35 @@ public class VanChartMultiPieLabelContentPane extends VanChartLabelContentPane {
setPercentFormatPane(new PercentFormatPaneWithCheckBox(parent, showOnPane));
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- setRichTextCategoryNameFormatPane(new MultiPieLevelNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextSeriesNameFormatPane(new MultiPieSeriesNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextValueFormatPane(new ValueFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextPercentFormatPane(new PercentFormatPaneWithoutCheckBox(parent, showOnPane));
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartMultiPieRichTextFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
+ };
+ }
+
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Level_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Percent")
+ };
+ }
+
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipMultiLevelNameFormat(),
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
+ };
}
protected AttrTooltipContent createAttrTooltip() {
diff --git a/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieRichTextFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieRichTextFieldListPane.java
new file mode 100644
index 000000000..2a0aea819
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieRichTextFieldListPane.java
@@ -0,0 +1,41 @@
+package com.fr.van.chart.multilayer.style;
+
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
+import com.fr.plugin.chart.multilayer.style.AttrTooltipMultiLevelNameFormat;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListener;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+public class VanChartMultiPieRichTextFieldListPane extends VanChartFieldListPane {
+
+ public VanChartMultiPieRichTextFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void initDefaultFieldButton() {
+ VanChartFieldListener fieldListener = getFieldListener();
+
+ VanChartFieldButton categoryNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Level_Name"),
+ new AttrTooltipMultiLevelNameFormat(), false, fieldListener);
+
+ VanChartFieldButton seriesNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name"),
+ new AttrTooltipSeriesFormat(), false, fieldListener);
+
+ VanChartFieldButton valueButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ new AttrTooltipValueFormat(), false, fieldListener);
+
+ VanChartFieldButton percentButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Percent"),
+ new AttrTooltipPercentFormat(), false, fieldListener);
+
+ setCategoryNameButton(categoryNameButton);
+ setSeriesNameButton(seriesNameButton);
+ setValueButton(valueButton);
+ setPercentButton(percentButton);
+ }
+}
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/multilayer/style/VanChartMultiPieTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieTooltipContentPane.java
index 1fbe0870a..76d536d5b 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieTooltipContentPane.java
@@ -1,12 +1,20 @@
package com.fr.van.chart.multilayer.style;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
+import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.plugin.chart.multilayer.style.AttrTooltipMultiLevelNameFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -27,12 +35,35 @@ public class VanChartMultiPieTooltipContentPane extends VanChartTooltipContentPa
setPercentFormatPane(new PercentFormatPaneWithCheckBox(parent, showOnPane));
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- setRichTextCategoryNameFormatPane(new MultiPieLevelNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextSeriesNameFormatPane(new MultiPieSeriesNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextValueFormatPane(new ValueFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextPercentFormatPane(new PercentFormatPaneWithoutCheckBox(parent, showOnPane));
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartMultiPieRichTextFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
+ };
+ }
+
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Level_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Percent")
+ };
+ }
+
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipMultiLevelNameFormat(),
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
+ };
}
@Override
diff --git a/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMutiPieRefreshTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMutiPieRefreshTooltipContentPane.java
index f375fa78f..f2e3534de 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMutiPieRefreshTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMutiPieRefreshTooltipContentPane.java
@@ -31,14 +31,6 @@ public class VanChartMutiPieRefreshTooltipContentPane extends VanChartMultiPieTo
setChangedPercentFormatPane(new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane));
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- super.initRichTextFormatPane(parent, showOnPane);
-
- setRichTextChangedValueFormatPane(new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextChangedPercentFormatPane(new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane));
- }
-
protected double[] getRowSize(double p){
return new double[]{p,p,p,p,p,p};
}
@@ -53,16 +45,4 @@ public class VanChartMutiPieRefreshTooltipContentPane extends VanChartMultiPieTo
new Component[]{getChangedPercentFormatPane(), null},
};
}
-
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextCategoryNameFormatPane(), null},
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{getRichTextValueFormatPane(), null},
- new Component[]{getRichTextChangedValueFormatPane(), null},
- new Component[]{getRichTextPercentFormatPane(), null},
- new Component[]{getRichTextChangedPercentFormatPane(), null}
- };
- }
-
}
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/pie/style/VanChartPieCategoryLabelContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieCategoryLabelContentPane.java
index e5b55d749..73c63bbee 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieCategoryLabelContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieCategoryLabelContentPane.java
@@ -1,16 +1,20 @@
package com.fr.van.chart.pie.style;
+import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
-import com.fr.plugin.chart.base.AttrTooltipRichText;
+import com.fr.plugin.chart.base.format.AttrTooltipCategoryFormat;
import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSummaryValueFormat;
import com.fr.plugin.chart.pie.attr.PieCategoryLabelContent;
import com.fr.van.chart.designer.component.VanChartLabelContentPane;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SummaryValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.SummaryValueFormatPaneWithoutCheckBox;
-import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -25,8 +29,6 @@ public class VanChartPieCategoryLabelContentPane extends VanChartLabelContentPan
private SummaryValueFormatPaneWithCheckBox summaryValueFormatPane;
- private SummaryValueFormatPaneWithoutCheckBox richTextSummaryValueFormatPane;
-
public VanChartPieCategoryLabelContentPane(VanChartStylePane parent, JPanel showOnPane, boolean inCondition) {
super(parent, showOnPane, inCondition);
}
@@ -42,25 +44,39 @@ public class VanChartPieCategoryLabelContentPane extends VanChartLabelContentPan
summaryValueFormatPane = new SummaryValueFormatPaneWithCheckBox(parent, showOnPane);
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- setRichTextCategoryNameFormatPane(new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane));
- richTextSummaryValueFormatPane = new SummaryValueFormatPaneWithoutCheckBox(parent, showOnPane);
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartPieCategoryRichTextFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
+ };
}
- @Override
- protected Component[][] getPaneComponents() {
- return new Component[][]{
- new Component[]{getCategoryNameFormatPane(), null},
- new Component[]{summaryValueFormatPane, null},
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Category_Use_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Summary_Value")
+ };
+ }
+
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipCategoryFormat(),
+ new AttrTooltipSummaryValueFormat()
};
}
@Override
- protected Component[][] getRichTextComponents() {
+ protected Component[][] getPaneComponents() {
return new Component[][]{
- new Component[]{getRichTextCategoryNameFormatPane(), null},
- new Component[]{richTextSummaryValueFormatPane, null},
+ new Component[]{getCategoryNameFormatPane(), null},
+ new Component[]{summaryValueFormatPane, null},
};
}
@@ -81,23 +97,15 @@ public class VanChartPieCategoryLabelContentPane extends VanChartLabelContentPan
summaryValueFormatPane.populate(pieCategoryLabelContent.getSummaryValueFormat());
}
- protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
- PieCategoryLabelContent pieCategoryLabelContent = (PieCategoryLabelContent) attrTooltipContent;
- VanChartFormatPaneWithoutCheckBox[] formatPaneGroup = new VanChartFormatPaneWithoutCheckBox[]{
- getRichTextCategoryNameFormatPane(),
- richTextSummaryValueFormatPane
- };
-
- AttrTooltipFormat[] formatGroup = new AttrTooltipFormat[]{
- pieCategoryLabelContent.getRichTextCategoryFormat(),
- pieCategoryLabelContent.getRichTextSummaryValueFormat()
- };
+ protected void updateTooltipFormat(AttrTooltipContent target, AttrTooltipContent source) {
+ super.updateTooltipFormat(target, source);
- setRichTextAttr(new AttrTooltipRichText());
- populateRichTextFormat(formatPaneGroup, formatGroup);
- populateRichText(pieCategoryLabelContent.getRichTextAttr());
+ if (target instanceof PieCategoryLabelContent && source instanceof PieCategoryLabelContent) {
+ PieCategoryLabelContent targetPieCategory = (PieCategoryLabelContent) target;
+ PieCategoryLabelContent sourcePieCategory = (PieCategoryLabelContent) source;
- checkRichEditorState(pieCategoryLabelContent);
+ targetPieCategory.setRichTextSummaryValueFormat(sourcePieCategory.getRichTextSummaryValueFormat());
+ }
}
@Override
@@ -107,12 +115,6 @@ public class VanChartPieCategoryLabelContentPane extends VanChartLabelContentPan
summaryValueFormatPane.update(pieCategoryLabelContent.getSummaryValueFormat());
}
- protected void updateRichEditor(AttrTooltipContent attrTooltipContent) {
- PieCategoryLabelContent pieCategoryLabelContent = (PieCategoryLabelContent) attrTooltipContent;
- super.updateRichEditor(pieCategoryLabelContent);
- richTextSummaryValueFormatPane.update(pieCategoryLabelContent.getRichTextSummaryValueFormat());
- }
-
@Override
public void setDirty(boolean isDirty) {
getCategoryNameFormatPane().setDirty(isDirty);
diff --git a/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieCategoryRichTextFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieCategoryRichTextFieldListPane.java
new file mode 100644
index 000000000..15361b490
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieCategoryRichTextFieldListPane.java
@@ -0,0 +1,70 @@
+package com.fr.van.chart.pie.style;
+
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.AttrTooltipContent;
+import com.fr.plugin.chart.base.format.AttrTooltipSummaryValueFormat;
+import com.fr.plugin.chart.pie.attr.PieCategoryLabelContent;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListener;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+import javax.swing.JPanel;
+import java.util.ArrayList;
+import java.util.List;
+
+public class VanChartPieCategoryRichTextFieldListPane extends VanChartFieldListPane {
+
+ private VanChartFieldButton summaryValueButton;
+
+ public VanChartPieCategoryRichTextFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void initDefaultFieldButton() {
+ super.initDefaultFieldButton();
+
+ VanChartFieldListener listener = getFieldListener();
+
+ summaryValueButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Summary_Value"),
+ new AttrTooltipSummaryValueFormat(), false, listener);
+ }
+
+ protected boolean supportAddField() {
+ return false;
+ }
+
+ protected void addDefaultFieldButton(JPanel fieldPane) {
+ fieldPane.add(getCategoryNameButton());
+ fieldPane.add(summaryValueButton);
+ }
+
+ protected List getDefaultFieldButtonList() {
+ List fieldButtonList = new ArrayList<>();
+
+ fieldButtonList.add(getCategoryNameButton());
+ fieldButtonList.add(summaryValueButton);
+
+ return fieldButtonList;
+ }
+
+ public void populateDefaultField(AttrTooltipContent tooltipContent) {
+ super.populateDefaultField(tooltipContent);
+
+ if (tooltipContent instanceof PieCategoryLabelContent) {
+ PieCategoryLabelContent pieCategory = (PieCategoryLabelContent) tooltipContent;
+ populateButtonFormat(summaryValueButton, pieCategory.getRichTextSummaryValueFormat());
+ }
+ }
+
+ public void updateDefaultField(AttrTooltipContent tooltipContent) {
+ super.updateDefaultField(tooltipContent);
+
+ if (tooltipContent instanceof PieCategoryLabelContent) {
+ PieCategoryLabelContent pieCategory = (PieCategoryLabelContent) tooltipContent;
+ updateButtonFormat(summaryValueButton, pieCategory.getRichTextSummaryValueFormat());
+ }
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieValueLabelContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieValueLabelContentPane.java
index ddc6e6631..f8c094aa5 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieValueLabelContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieValueLabelContentPane.java
@@ -1,12 +1,20 @@
package com.fr.van.chart.pie.style;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.AttrTooltipContent;
+import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.van.chart.designer.component.VanChartLabelContentPane;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -35,11 +43,34 @@ public class VanChartPieValueLabelContentPane extends VanChartLabelContentPane {
setPercentFormatPane(new PercentFormatPaneWithCheckBox(parent, showOnPane));
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- setRichTextSeriesNameFormatPane(new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextValueFormatPane(new ValueFormatPaneWithoutCheckBox(parent, showOnPane));
- setRichTextPercentFormatPane(new PercentFormatPaneWithoutCheckBox(parent, showOnPane));
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartPieValueRichTextFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
+ };
+ }
+
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Percent")
+ };
+ }
+
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
+ };
}
@Override
@@ -56,15 +87,6 @@ public class VanChartPieValueLabelContentPane extends VanChartLabelContentPane {
};
}
- @Override
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{getRichTextValueFormatPane(), null},
- new Component[]{getRichTextPercentFormatPane(), null}
- };
- }
-
@Override
public void setDirty(boolean isDirty) {
getSeriesNameFormatPane().setDirty(isDirty);
diff --git a/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieValueRichTextFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieValueRichTextFieldListPane.java
new file mode 100644
index 000000000..072b3a801
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieValueRichTextFieldListPane.java
@@ -0,0 +1,34 @@
+package com.fr.van.chart.pie.style;
+
+import com.fr.design.ui.ModernUIPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+import javax.swing.JPanel;
+import java.util.ArrayList;
+import java.util.List;
+
+public class VanChartPieValueRichTextFieldListPane extends VanChartFieldListPane {
+
+ public VanChartPieValueRichTextFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void addDefaultFieldButton(JPanel fieldPane) {
+ fieldPane.add(getSeriesNameButton());
+ fieldPane.add(getValueButton());
+ fieldPane.add(getPercentButton());
+ }
+
+ protected List getDefaultFieldButtonList() {
+ List fieldButtonList = new ArrayList<>();
+
+ fieldButtonList.add(getSeriesNameButton());
+ fieldButtonList.add(getValueButton());
+ fieldButtonList.add(getPercentButton());
+
+ return fieldButtonList;
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterRefreshTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterRefreshTooltipContentPane.java
index db7ce4152..dea075650 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterRefreshTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterRefreshTooltipContentPane.java
@@ -1,13 +1,9 @@
package com.fr.van.chart.scatter;
import com.fr.plugin.chart.base.AttrTooltipContent;
-import com.fr.plugin.chart.base.format.AttrTooltipFormat;
import com.fr.plugin.chart.scatter.attr.ScatterAttrTooltipContent;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
-import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -19,7 +15,6 @@ import java.awt.Component;
public class VanChartScatterRefreshTooltipContentPane extends VanChartScatterTooltipContentPane {
private ChangedValueFormatPaneWithCheckBox changedSizeFormatPane;
- private ChangedValueFormatPaneWithoutCheckBox richTextChangedSizeFormatPane;
public VanChartScatterRefreshTooltipContentPane(VanChartStylePane parent, JPanel showOnPane) {
super(null, showOnPane);
@@ -33,14 +28,6 @@ public class VanChartScatterRefreshTooltipContentPane extends VanChartScatterToo
setChangedPercentFormatPane(changedPercentFormatPane);
}
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- super.initRichTextFormatPane(parent, showOnPane);
-
- richTextChangedSizeFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane);
- ChangedPercentFormatPaneWithoutCheckBox richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
- setRichTextChangedPercentFormatPane(richTextChangedPercentFormatPane);
- }
-
protected boolean supportRichEditor() {
return false;
}
@@ -60,19 +47,6 @@ public class VanChartScatterRefreshTooltipContentPane extends VanChartScatterToo
};
}
- @Override
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{getRichTextXFormatPane(), null},
- new Component[]{getRichTextYFormatPane(), null},
- new Component[]{getRichTextSizeFormatPane(), null},
- new Component[]{richTextChangedSizeFormatPane, null},
- new Component[]{getRichTextChangedPercentFormatPane(), null}
- };
- }
-
-
@Override
protected void populateFormatPane(AttrTooltipContent attrTooltipContent) {
super.populateFormatPane(attrTooltipContent);
@@ -84,27 +58,6 @@ public class VanChartScatterRefreshTooltipContentPane extends VanChartScatterToo
}
}
- protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
- super.populateRichEditor(attrTooltipContent);
-
- if (attrTooltipContent instanceof ScatterAttrTooltipContent) {
- ScatterAttrTooltipContent scatterAttrTooltipContent = (ScatterAttrTooltipContent) attrTooltipContent;
-
- VanChartFormatPaneWithoutCheckBox[] formatPaneGroup = new VanChartFormatPaneWithoutCheckBox[]{
- richTextChangedSizeFormatPane,
- getRichTextChangedPercentFormatPane()
- };
-
- AttrTooltipFormat[] formatGroup = new AttrTooltipFormat[]{
- scatterAttrTooltipContent.getRichTextChangeSizeFormat(),
- scatterAttrTooltipContent.getRichTextChangedSizePercentFormat()
- };
-
- populateRichTextFormat(formatPaneGroup, formatGroup);
- populateRichText(attrTooltipContent.getRichTextAttr());
- }
- }
-
@Override
protected void updateFormatPane(AttrTooltipContent attrTooltipContent) {
super.updateFormatPane(attrTooltipContent);
@@ -115,16 +68,6 @@ public class VanChartScatterRefreshTooltipContentPane extends VanChartScatterToo
}
}
- protected void updateRichEditor(AttrTooltipContent attrTooltipContent) {
- super.updateRichEditor(attrTooltipContent);
-
- if (attrTooltipContent instanceof ScatterAttrTooltipContent) {
- ScatterAttrTooltipContent scatterAttrTooltipContent = (ScatterAttrTooltipContent) attrTooltipContent;
- richTextChangedSizeFormatPane.update(scatterAttrTooltipContent.getRichTextChangeSizeFormat());
- getRichTextChangedPercentFormatPane().update(scatterAttrTooltipContent.getRichTextChangedSizePercentFormat());
- }
- }
-
@Override
public void setDirty(boolean isDirty) {
super.setDirty(isDirty);
diff --git a/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterRichTextFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterRichTextFieldListPane.java
new file mode 100644
index 000000000..776d5397d
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterRichTextFieldListPane.java
@@ -0,0 +1,93 @@
+package com.fr.van.chart.scatter;
+
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.AttrTooltipContent;
+import com.fr.plugin.chart.base.format.AttrTooltipSizeFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipXFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipYFormat;
+import com.fr.plugin.chart.scatter.attr.ScatterAttrTooltipContent;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListener;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+import javax.swing.JPanel;
+import java.util.ArrayList;
+import java.util.List;
+
+public class VanChartScatterRichTextFieldListPane extends VanChartFieldListPane {
+
+ private VanChartFieldButton richTextXFormatPane;
+ private VanChartFieldButton richTextYFormatPane;
+ private VanChartFieldButton richTextSizeFormatPane;
+
+ public VanChartScatterRichTextFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ public VanChartFieldButton getRichTextXFormatPane() {
+ return richTextXFormatPane;
+ }
+
+ public VanChartFieldButton getRichTextYFormatPane() {
+ return richTextYFormatPane;
+ }
+
+ public VanChartFieldButton getRichTextSizeFormatPane() {
+ return richTextSizeFormatPane;
+ }
+
+ protected void initDefaultFieldButton() {
+ super.initDefaultFieldButton();
+
+ VanChartFieldListener listener = getFieldListener();
+
+ richTextXFormatPane = new VanChartFieldButton("x", new AttrTooltipXFormat(), false, listener);
+ richTextYFormatPane = new VanChartFieldButton("y", new AttrTooltipYFormat(), false, listener);
+ richTextSizeFormatPane = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Value"), new AttrTooltipSizeFormat(), false, listener);
+ }
+
+ protected void addDefaultFieldButton(JPanel fieldPane) {
+ fieldPane.add(getSeriesNameButton());
+ fieldPane.add(richTextXFormatPane);
+ fieldPane.add(richTextYFormatPane);
+ fieldPane.add(richTextSizeFormatPane);
+ }
+
+ protected List getDefaultFieldButtonList() {
+ List fieldButtonList = new ArrayList<>();
+
+ fieldButtonList.add(getSeriesNameButton());
+ fieldButtonList.add(richTextXFormatPane);
+ fieldButtonList.add(richTextYFormatPane);
+ fieldButtonList.add(richTextSizeFormatPane);
+
+ return fieldButtonList;
+ }
+
+ public void populateDefaultField(AttrTooltipContent tooltipContent) {
+ super.populateDefaultField(tooltipContent);
+
+ if (tooltipContent instanceof ScatterAttrTooltipContent) {
+ ScatterAttrTooltipContent scatter = (ScatterAttrTooltipContent) tooltipContent;
+
+ populateButtonFormat(richTextXFormatPane, scatter.getRichTextXFormat());
+ populateButtonFormat(richTextYFormatPane, scatter.getRichTextYFormat());
+ populateButtonFormat(richTextSizeFormatPane, scatter.getRichTextSizeFormat());
+ }
+ }
+
+ public void updateDefaultField(AttrTooltipContent tooltipContent) {
+ super.updateDefaultField(tooltipContent);
+
+ if (tooltipContent instanceof ScatterAttrTooltipContent) {
+ ScatterAttrTooltipContent scatter = (ScatterAttrTooltipContent) tooltipContent;
+
+ updateButtonFormat(richTextXFormatPane, scatter.getRichTextXFormat());
+ updateButtonFormat(richTextYFormatPane, scatter.getRichTextYFormat());
+ updateButtonFormat(richTextSizeFormatPane, scatter.getRichTextSizeFormat());
+ }
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterTooltipContentPane.java
index 39b20bedb..396edc6fe 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterTooltipContentPane.java
@@ -1,17 +1,22 @@
package com.fr.van.chart.scatter;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
-import com.fr.plugin.chart.base.AttrTooltipRichText;
import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSizeFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipXFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipYFormat;
import com.fr.plugin.chart.scatter.attr.ScatterAttrTooltipContent;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
-import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.XFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.XFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.YFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.YFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -26,10 +31,6 @@ public class VanChartScatterTooltipContentPane extends VanChartTooltipContentPa
private YFormatPaneWithCheckBox yFormatPane;
private ValueFormatPaneWithCheckBox sizeFormatPane;
- private XFormatPaneWithoutCheckBox richTextXFormatPane;
- private YFormatPaneWithoutCheckBox richTextYFormatPane;
- private ValueFormatPaneWithoutCheckBox richTextSizeFormatPane;
-
public XFormatPaneWithCheckBox getXFormatPane() {
return xFormatPane;
}
@@ -42,18 +43,6 @@ public class VanChartScatterTooltipContentPane extends VanChartTooltipContentPa
return sizeFormatPane;
}
- public XFormatPaneWithoutCheckBox getRichTextXFormatPane() {
- return richTextXFormatPane;
- }
-
- public YFormatPaneWithoutCheckBox getRichTextYFormatPane() {
- return richTextYFormatPane;
- }
-
- public ValueFormatPaneWithoutCheckBox getRichTextSizeFormatPane() {
- return richTextSizeFormatPane;
- }
-
public VanChartScatterTooltipContentPane(VanChartStylePane parent, JPanel showOnPane){
super(parent, showOnPane);
}
@@ -71,13 +60,18 @@ public class VanChartScatterTooltipContentPane extends VanChartTooltipContentPa
sizeFormatPane = new ValueFormatPaneWithCheckBox(parent, showOnPane);
}
- @Override
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- super.initRichTextFormatPane(parent, showOnPane);
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+
+ return new VanChartRichTextPane(richEditorPane) {
- richTextXFormatPane = new XFormatPaneWithoutCheckBox(parent, showOnPane);
- richTextYFormatPane = new YFormatPaneWithoutCheckBox(parent, showOnPane);
- richTextSizeFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartScatterRichTextFieldListPane(fieldAttrPane, richEditor);
+ }
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
+ }
+ };
}
@Override
@@ -90,16 +84,6 @@ public class VanChartScatterTooltipContentPane extends VanChartTooltipContentPa
};
}
- @Override
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{richTextXFormatPane, null},
- new Component[]{richTextYFormatPane, null},
- new Component[]{richTextSizeFormatPane, null}
- };
- }
-
@Override
protected void populateFormatPane(AttrTooltipContent attrTooltipContent) {
super.populateFormatPane(attrTooltipContent);
@@ -111,30 +95,20 @@ public class VanChartScatterTooltipContentPane extends VanChartTooltipContentPa
}
}
- protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
- if (attrTooltipContent instanceof ScatterAttrTooltipContent) {
- ScatterAttrTooltipContent scatterAttrTooltipContent = (ScatterAttrTooltipContent) attrTooltipContent;
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Series_Name"),
+ "x",
+ "y",
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value")};
+ }
- VanChartFormatPaneWithoutCheckBox[] formatPaneGroup = new VanChartFormatPaneWithoutCheckBox[]{
- getRichTextSeriesNameFormatPane(),
- richTextXFormatPane,
- richTextYFormatPane,
- richTextSizeFormatPane
- };
-
- AttrTooltipFormat[] formatGroup = new AttrTooltipFormat[]{
- scatterAttrTooltipContent.getRichTextSeriesFormat(),
- scatterAttrTooltipContent.getRichTextXFormat(),
- scatterAttrTooltipContent.getRichTextYFormat(),
- scatterAttrTooltipContent.getRichTextSizeFormat()
- };
-
- setRichTextAttr(new AttrTooltipRichText());
- populateRichTextFormat(formatPaneGroup, formatGroup);
- populateRichText(attrTooltipContent.getRichTextAttr());
-
- checkRichEditorState(attrTooltipContent);
- }
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipXFormat(),
+ new AttrTooltipYFormat(),
+ new AttrTooltipSizeFormat()};
}
@Override
@@ -148,14 +122,16 @@ public class VanChartScatterTooltipContentPane extends VanChartTooltipContentPa
}
}
- protected void updateRichEditor(AttrTooltipContent attrTooltipContent) {
- super.updateRichEditor(attrTooltipContent);
+ protected void updateTooltipFormat(AttrTooltipContent target, AttrTooltipContent source) {
+ super.updateTooltipFormat(target, source);
- if (attrTooltipContent instanceof ScatterAttrTooltipContent) {
- ScatterAttrTooltipContent scatterAttrTooltipContent = (ScatterAttrTooltipContent) attrTooltipContent;
- richTextXFormatPane.update(scatterAttrTooltipContent.getRichTextXFormat());
- richTextYFormatPane.update(scatterAttrTooltipContent.getRichTextYFormat());
- richTextSizeFormatPane.update(scatterAttrTooltipContent.getRichTextSizeFormat());
+ if (target instanceof ScatterAttrTooltipContent && source instanceof ScatterAttrTooltipContent) {
+ ScatterAttrTooltipContent targetScatter = (ScatterAttrTooltipContent) target;
+ ScatterAttrTooltipContent sourceScatter = (ScatterAttrTooltipContent) source;
+
+ targetScatter.setRichTextXFormat(sourceScatter.getRichTextXFormat());
+ targetScatter.setRichTextYFormat(sourceScatter.getRichTextYFormat());
+ targetScatter.setRichTextSizeFormat(sourceScatter.getRichTextSizeFormat());
}
}
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..be2f5ff3e 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_Form_Widget_Style_Border_Color")), 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/VanChartStructureRefreshTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureRefreshTooltipContentPane.java
index ea09ff3c8..cfbaefc02 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureRefreshTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureRefreshTooltipContentPane.java
@@ -1,9 +1,7 @@
package com.fr.van.chart.structure.desinger.style;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -28,16 +26,6 @@ public class VanChartStructureRefreshTooltipContentPane extends VanChartStructur
setChangedPercentFormatPane(changedPercentFormatPane);
}
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- super.initRichTextFormatPane(parent, showOnPane);
-
- ChangedValueFormatPaneWithoutCheckBox richTextChangedValueFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane);
- ChangedPercentFormatPaneWithoutCheckBox richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
-
- setRichTextChangedValueFormatPane(richTextChangedValueFormatPane);
- setRichTextChangedPercentFormatPane(richTextChangedPercentFormatPane);
- }
-
protected boolean supportRichEditor() {
return false;
}
@@ -55,14 +43,4 @@ public class VanChartStructureRefreshTooltipContentPane extends VanChartStructur
new Component[]{getChangedPercentFormatPane(), null},
};
}
-
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextCategoryNameFormatPane(), null},
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{getRichTextValueFormatPane(), null},
- new Component[]{getRichTextChangedValueFormatPane(), null},
- new Component[]{getRichTextChangedPercentFormatPane(), null}
- };
- }
}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureRichTextFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureRichTextFieldListPane.java
new file mode 100644
index 000000000..49f81968c
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureRichTextFieldListPane.java
@@ -0,0 +1,61 @@
+package com.fr.van.chart.structure.desinger.style;
+
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
+import com.fr.plugin.chart.multilayer.style.AttrTooltipMultiLevelNameFormat;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListener;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+import javax.swing.JPanel;
+import java.util.ArrayList;
+import java.util.List;
+
+public class VanChartStructureRichTextFieldListPane extends VanChartFieldListPane {
+
+ public VanChartStructureRichTextFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void initDefaultFieldButton() {
+ VanChartFieldListener fieldListener = getFieldListener();
+
+ VanChartFieldButton categoryNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Node_Name"),
+ new AttrTooltipMultiLevelNameFormat(), false, fieldListener);
+
+ VanChartFieldButton seriesNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name"),
+ new AttrTooltipSeriesFormat(), false, fieldListener);
+
+ VanChartFieldButton valueButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Value"),
+ new AttrTooltipValueFormat(), false, fieldListener);
+
+ VanChartFieldButton percentButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Percent"),
+ new AttrTooltipPercentFormat(), false, fieldListener);
+
+ setCategoryNameButton(categoryNameButton);
+ setSeriesNameButton(seriesNameButton);
+ setValueButton(valueButton);
+ setPercentButton(percentButton);
+ }
+
+ protected void addDefaultFieldButton(JPanel fieldPane) {
+ fieldPane.add(getCategoryNameButton());
+ fieldPane.add(getSeriesNameButton());
+ fieldPane.add(getValueButton());
+ }
+
+ protected List getDefaultFieldButtonList() {
+ List fieldButtonList = new ArrayList<>();
+
+ fieldButtonList.add(getCategoryNameButton());
+ fieldButtonList.add(getSeriesNameButton());
+ fieldButtonList.add(getValueButton());
+
+ return fieldButtonList;
+ }
+}
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/structure/desinger/style/VanChartStructureTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureTooltipContentPane.java
index f5999391f..a2cb16308 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureTooltipContentPane.java
@@ -2,20 +2,21 @@ package com.fr.van.chart.structure.desinger.style;
import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
-import com.fr.plugin.chart.base.AttrTooltipRichText;
import com.fr.plugin.chart.base.format.AttrTooltipFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipSeriesFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.plugin.chart.multilayer.style.AttrTooltipMultiLevelNameFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
-import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -38,15 +39,6 @@ public class VanChartStructureTooltipContentPane extends VanChartTooltipContentP
};
}
- @Override
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextCategoryNameFormatPane(), null},
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{getRichTextValueFormatPane(), null}
- };
- }
-
@Override
protected void initFormatPane(VanChartStylePane parent, JPanel showOnPane) {
CategoryNameFormatPaneWithCheckBox categoryNameFormatPane = new CategoryNameFormatPaneWithCheckBox(parent, showOnPane) {
@@ -70,44 +62,34 @@ public class VanChartStructureTooltipContentPane extends VanChartTooltipContentP
setPercentFormatPane(percentFormatPane);
}
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- CategoryNameFormatPaneWithoutCheckBox richTextCategoryNameFormatPane = new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Node_Name");
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartStructureRichTextFieldListPane(fieldAttrPane, richEditor);
}
- };
- SeriesNameFormatPaneWithoutCheckBox richTextSeriesNameFormatPane = new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name");
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
}
};
- ValueFormatPaneWithoutCheckBox richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
- PercentFormatPaneWithoutCheckBox richTextPercentFormatPane = new PercentFormatPaneWithoutCheckBox(parent, showOnPane);
-
- setRichTextCategoryNameFormatPane(richTextCategoryNameFormatPane);
- setRichTextSeriesNameFormatPane(richTextSeriesNameFormatPane);
- setRichTextValueFormatPane(richTextValueFormatPane);
- setRichTextPercentFormatPane(richTextPercentFormatPane);
}
- protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
- VanChartFormatPaneWithoutCheckBox[] formatPaneGroup = new VanChartFormatPaneWithoutCheckBox[]{
- getRichTextCategoryNameFormatPane(),
- getRichTextSeriesNameFormatPane(),
- getRichTextValueFormatPane()
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_Node_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Value")
};
+ }
- AttrTooltipFormat[] formatGroup = new AttrTooltipFormat[]{
- attrTooltipContent.getRichTextCategoryFormat(),
- attrTooltipContent.getRichTextSeriesFormat(),
- attrTooltipContent.getRichTextValueFormat()
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipMultiLevelNameFormat(),
+ new AttrTooltipSeriesFormat(),
+ new AttrTooltipValueFormat()
};
-
- setRichTextAttr(new AttrTooltipRichText());
- populateRichTextFormat(formatPaneGroup, formatGroup);
- populateRichText(attrTooltipContent.getRichTextAttr());
-
- checkRichEditorState(attrTooltipContent);
}
@Override
diff --git a/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudRefreshTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudRefreshTooltipContentPane.java
index cab4d8558..5d0ff9f92 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudRefreshTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudRefreshTooltipContentPane.java
@@ -3,9 +3,7 @@ package com.fr.van.chart.wordcloud.designer.style;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -36,21 +34,6 @@ public class VanChartWordCloudRefreshTooltipContentPane extends VanChartWordClou
setChangedPercentFormatPane(changedPercentFormatPane);
}
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- super.initRichTextFormatPane(parent, showOnPane);
-
- ChangedValueFormatPaneWithoutCheckBox richTextChangedValueFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Change_Word_Value");
- }
- };
-
- ChangedPercentFormatPaneWithoutCheckBox richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
-
- setRichTextChangedValueFormatPane(richTextChangedValueFormatPane);
- setRichTextChangedPercentFormatPane(richTextChangedPercentFormatPane);
- }
-
protected boolean supportRichEditor() {
return false;
}
@@ -69,15 +52,4 @@ public class VanChartWordCloudRefreshTooltipContentPane extends VanChartWordClou
new Component[]{getChangedPercentFormatPane(), null},
};
}
-
- protected Component[][] getRichTextComponents() {
- return new Component[][]{
- new Component[]{getRichTextCategoryNameFormatPane(), null},
- new Component[]{getRichTextSeriesNameFormatPane(), null},
- new Component[]{getRichTextValueFormatPane(), null},
- new Component[]{getRichTextChangedValueFormatPane(), null},
- new Component[]{getRichTextPercentFormatPane(), null},
- new Component[]{getRichTextChangedPercentFormatPane(), null}
- };
- }
}
diff --git a/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudRichTextFieldListPane.java b/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudRichTextFieldListPane.java
new file mode 100644
index 000000000..3394e6f05
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudRichTextFieldListPane.java
@@ -0,0 +1,41 @@
+package com.fr.van.chart.wordcloud.designer.style;
+
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
+import com.fr.plugin.chart.base.format.AttrTooltipCategoryFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipNameFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldButton;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListener;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+
+public class VanChartWordCloudRichTextFieldListPane extends VanChartFieldListPane {
+
+ public VanChartWordCloudRichTextFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditorPane) {
+ super(fieldAttrPane, richEditorPane);
+ }
+
+ protected void initDefaultFieldButton() {
+ VanChartFieldListener fieldListener = getFieldListener();
+
+ VanChartFieldButton categoryNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name"),
+ new AttrTooltipCategoryFormat(), false, fieldListener);
+
+ VanChartFieldButton seriesNameButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Word_Name"),
+ new AttrTooltipNameFormat(), false, fieldListener);
+
+ VanChartFieldButton valueButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Word_Value"),
+ new AttrTooltipValueFormat(), false, fieldListener);
+
+ VanChartFieldButton percentButton = new VanChartFieldButton(Toolkit.i18nText("Fine-Design_Chart_Use_Percent"),
+ new AttrTooltipPercentFormat(), false, fieldListener);
+
+ setCategoryNameButton(categoryNameButton);
+ setSeriesNameButton(seriesNameButton);
+ setValueButton(valueButton);
+ setPercentButton(percentButton);
+ }
+}
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);
diff --git a/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudTooltipContentPane.java
index c0e9ac6c3..0abd60ac1 100644
--- a/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudTooltipContentPane.java
+++ b/designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudTooltipContentPane.java
@@ -2,17 +2,22 @@ package com.fr.van.chart.wordcloud.designer.style;
import com.fr.design.i18n.Toolkit;
+import com.fr.design.ui.ModernUIPane;
import com.fr.plugin.chart.base.AttrTooltipContent;
+import com.fr.plugin.chart.base.format.AttrTooltipCategoryFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipFormat;
import com.fr.plugin.chart.base.format.AttrTooltipNameFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipPercentFormat;
+import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
-import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
+import com.fr.van.chart.designer.component.richText.VanChartFieldAttrPane;
+import com.fr.van.chart.designer.component.richText.VanChartFieldListPane;
+import com.fr.van.chart.designer.component.richText.VanChartRichEditorModel;
+import com.fr.van.chart.designer.component.richText.VanChartRichTextPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@@ -53,31 +58,37 @@ public class VanChartWordCloudTooltipContentPane extends VanChartTooltipContentP
setPercentFormatPane(percentFormatPane);
}
- protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
- CategoryNameFormatPaneWithoutCheckBox richTextCategoryNameFormatPane = new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name");
+ protected VanChartRichTextPane createRichTextPane(ModernUIPane richEditorPane) {
+ return new VanChartRichTextPane(richEditorPane) {
+
+ protected VanChartFieldListPane createFieldListPane(VanChartFieldAttrPane fieldAttrPane, ModernUIPane richEditor) {
+ return new VanChartWordCloudRichTextFieldListPane(fieldAttrPane, richEditor);
}
- };
- SeriesNameFormatPaneWithoutCheckBox richTextSeriesNameFormatPane = new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Word_Name");
+
+ protected AttrTooltipContent getInitialTooltipContent() {
+ return createAttrTooltip();
}
};
- ValueFormatPaneWithoutCheckBox richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane) {
- protected String getCheckBoxText() {
- return Toolkit.i18nText("Fine-Design_Chart_Word_Value");
- }
+ }
+
+ protected String[] getRichTextFieldNames() {
+ return new String[]{
+ Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Word_Name"),
+ Toolkit.i18nText("Fine-Design_Chart_Word_Value"),
+ Toolkit.i18nText("Fine-Design_Chart_Use_Percent")
};
- PercentFormatPaneWithoutCheckBox richTextPercentFormatPane = new PercentFormatPaneWithoutCheckBox(parent, showOnPane);
+ }
- setRichTextCategoryNameFormatPane(richTextCategoryNameFormatPane);
- setRichTextSeriesNameFormatPane(richTextSeriesNameFormatPane);
- setRichTextValueFormatPane(richTextValueFormatPane);
- setRichTextPercentFormatPane(richTextPercentFormatPane);
+ protected AttrTooltipFormat[] getRichTextFieldFormats() {
+ return new AttrTooltipFormat[]{
+ new AttrTooltipCategoryFormat(),
+ new AttrTooltipNameFormat(),
+ new AttrTooltipValueFormat(),
+ new AttrTooltipPercentFormat()
+ };
}
- @Override
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent attrTooltipContent = new AttrTooltipContent();
attrTooltipContent.setSeriesFormat(new AttrTooltipNameFormat());
diff --git a/designer-chart/src/main/resources/com/fr/design/editor/rich_editor.html b/designer-chart/src/main/resources/com/fr/design/editor/rich_editor.html
index e6c769f0a..6df5a29a1 100644
--- a/designer-chart/src/main/resources/com/fr/design/editor/rich_editor.html
+++ b/designer-chart/src/main/resources/com/fr/design/editor/rich_editor.html
@@ -3,8 +3,8 @@
-
-
+
+
@@ -26,9 +26,11 @@
var initParams = Pool.data.getInitParams();
var align = Pool.data.getAlign();
+ var insert_param;
+
var getDimensionIds = function (params) {
var result = [];
- var paramGroup = params.split("-");
+ var paramGroup = params.split("|");
for (var i = 0, len = paramGroup.length; i < len; i++) {
var [key, value] = paramGroup[i].split(":");
@@ -44,9 +46,8 @@
var getInitContent = function (params, initParams, align) {
var editorService = BI.Services.getService("bi.service.design.chart.common.editor");
- var paramGroup = params.split("-");
-
- content = "";
+ var paramGroup = params.split("|");
+ var content = "";
for (var i = 0, len = paramGroup.length; i < len; i++) {
var [key, value] = paramGroup[i].split(":");
@@ -56,9 +57,25 @@
}
}
+ if (BI.endWith(content, '
')) {
+ content = content.slice(0, -8) + '';
+ }
+
return content;
}
+ var selectLast = function (instance) {
+ if (instance == null) {
+ return;
+ }
+
+ var target = instance.selElm()
+
+ if (target) {
+ instance.selected({target});
+ }
+ };
+
var dimensionIds = getDimensionIds(params);
if (initParams) {
@@ -81,7 +98,10 @@
toolbar: {
buttons: [
{type: "bi.rich_editor_font_chooser"},
- {type: "bi.rich_editor_size_chooser"},
+ {
+ type: "bi.rich_editor_size_chooser",
+ width: 70
+ },
{type: "bi.rich_editor_bold_button"},
{type: "bi.rich_editor_italic_button"},
{type: "bi.rich_editor_underline_button"},
@@ -89,7 +109,12 @@
{type: "bi.rich_editor_align_left_button"},
{type: "bi.rich_editor_align_center_button"},
{type: "bi.rich_editor_align_right_button"},
- {type: "bi.design.chart.common.editor.insert_param"}
+ {
+ type: "bi.design.chart.common.editor.insert_param",
+ ref: function (_ref) {
+ insert_param = _ref;
+ }
+ }
]
},
ref: function (_ref) {
@@ -97,7 +122,9 @@
}
});
- Pool.dispatch = function () {
+ selectLast(rich_editor.editor.instance);
+
+ Pool.refresh = function () {
var content = Pool.data.getContent();
var isAuto = Pool.data.isAuto();
var params = Pool.data.getParams();
@@ -117,7 +144,17 @@
});
rich_editor.setFocus();
- }
+
+ selectLast(rich_editor.editor.instance);
+ };
+
+ Pool.addField = function () {
+ var addition = Pool.data.getAddition();
+
+ if (addition && insert_param) {
+ insert_param.selectedParam(addition);
+ }
+ };
Pool.update = function () {
var {content, isAuto} = rich_editor.getValue();
diff --git a/designer-chart/src/main/resources/com/fr/design/editor/script/editor.js b/designer-chart/src/main/resources/com/fr/design/editor/script/editor.js
index f3e053679..3786e47ef 100644
--- a/designer-chart/src/main/resources/com/fr/design/editor/script/editor.js
+++ b/designer-chart/src/main/resources/com/fr/design/editor/script/editor.js
@@ -50,11 +50,14 @@
},
items: [{
type: "bi.htape",
+ tgap: 3,
items: [{
type: "bi.label",
text: BI.i18nText("BI-Design_Font_Style") + ": ",
textAlign: "left",
- width: 70
+ width: 60,
+ tgap: 2,
+ lgap: 3
}, {
type: "bi.button_group",
items: this.model.fontStyleItems,
diff --git a/designer-chart/src/main/resources/com/fr/design/editor/script/editor.model.js b/designer-chart/src/main/resources/com/fr/design/editor/script/editor.model.js
index c901fd31e..e1ee49645 100644
--- a/designer-chart/src/main/resources/com/fr/design/editor/script/editor.model.js
+++ b/designer-chart/src/main/resources/com/fr/design/editor/script/editor.model.js
@@ -18,7 +18,6 @@
return [{
type: "bi.single_select_radio_item",
text: BI.i18nText("BI-Basic_Auto"),
- hgap: 5,
width: 50,
logic: {
dynamic: true
@@ -28,7 +27,6 @@
}, {
type: "bi.single_select_radio_item",
text: BI.i18nText("BI-Basic_Custom"),
- hgap: 5,
width: 60,
logic: {
dynamic: true
diff --git a/designer-chart/src/main/resources/com/fr/design/editor/script/insertcombo/combo.insert_param.js b/designer-chart/src/main/resources/com/fr/design/editor/script/insertcombo/combo.insert_param.js
index 7cf11f9ce..2db38878c 100644
--- a/designer-chart/src/main/resources/com/fr/design/editor/script/insertcombo/combo.insert_param.js
+++ b/designer-chart/src/main/resources/com/fr/design/editor/script/insertcombo/combo.insert_param.js
@@ -54,6 +54,7 @@
type: "bi.combo",
direction: "bottom,left",
isNeedAdjustWidth: true,
+ invisible: true,
el: {
type: "bi.vertical_adapt",
items: [{
@@ -99,6 +100,11 @@
_getInstance: function () {
return this.options.editor.selectedInstance || this.options.editor.getInstance();
+ },
+
+ selectedParam: function (param) {
+ var editorService = BI.Services.getService("bi.service.design.chart.common.editor");
+ this.addParam(param, editorService.encode);
}
});
diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/LayoutAdapter.java b/designer-form/src/main/java/com/fr/design/designer/beans/LayoutAdapter.java
index f10b877e2..e2aa7f152 100644
--- a/designer-form/src/main/java/com/fr/design/designer/beans/LayoutAdapter.java
+++ b/designer-form/src/main/java/com/fr/design/designer/beans/LayoutAdapter.java
@@ -54,7 +54,7 @@ public interface LayoutAdapter {
* @return 是否添加成功,成功返回true,否则false
*/
boolean addBean(XCreator creator, int x, int y, boolean accept);
-
+
/**
* 返回该布局管理适配器的Painter,为容器提供放置位置的标识。
*/
diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/AbstractLayoutAdapter.java b/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/AbstractLayoutAdapter.java
index d9fae2dd8..e9851a7e8 100644
--- a/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/AbstractLayoutAdapter.java
+++ b/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/AbstractLayoutAdapter.java
@@ -102,6 +102,7 @@ public abstract class AbstractLayoutAdapter implements LayoutAdapter {
return true;
}
+
/**
* 删除组件
*
diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormModelAdapter.java b/designer-form/src/main/java/com/fr/design/mainframe/FormModelAdapter.java
index efc7ff2b0..e5617c946 100644
--- a/designer-form/src/main/java/com/fr/design/mainframe/FormModelAdapter.java
+++ b/designer-form/src/main/java/com/fr/design/mainframe/FormModelAdapter.java
@@ -11,11 +11,15 @@ import com.fr.form.ui.BaseChartEditor;
import com.fr.form.ui.ElementCaseEditor;
import com.fr.form.ui.Widget;
import com.fr.script.Calculator;
+import com.fr.stable.EmbParaFilter;
import com.fr.stable.ParameterProvider;
import com.fr.stable.js.WidgetName;
+import com.fr.util.ParameterApplyHelper;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
public class FormModelAdapter extends DesignModelAdapter