Browse Source

Merge branch 'release/10.0' of https://code.fineres.com/scm/design/design into release/10.0

解决冲突
feature/big-screen
kerry 4 years ago
parent
commit
391487d285
  1. 5
      designer-base/src/main/java/com/fr/design/actions/TableDataSourceAction.java
  2. 7
      designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java
  3. 18
      designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTableModel.java
  4. 4
      designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java
  5. 2
      designer-base/src/main/java/com/fr/design/env/RemoteWorkspace.java
  6. 2
      designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java
  7. 20
      designer-base/src/main/java/com/fr/design/formula/FormulaPane.java
  8. 73
      designer-base/src/main/java/com/fr/design/formula/FormulaTextField.java
  9. 25
      designer-base/src/main/java/com/fr/design/formula/SortFormulaPane.java
  10. 45
      designer-base/src/main/java/com/fr/design/gui/itextfield/DictionaryTextField.java
  11. 2
      designer-base/src/main/java/com/fr/design/gui/syntax/ui/rtextarea/RTextAreaBase.java
  12. 4
      designer-base/src/main/java/com/fr/design/parameter/ParameterDesignerProvider.java
  13. 10
      designer-base/src/test/java/com/fr/design/formula/FormulaPaneTest.java
  14. 18
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java
  15. 4
      designer-chart/src/main/java/com/fr/van/chart/box/data/report/BoxPlotReportDataContentPane.java
  16. 3
      designer-chart/src/main/java/com/fr/van/chart/box/data/table/BoxPlotTableDataContentPane.java
  17. 6
      designer-chart/src/main/java/com/fr/van/chart/bubble/VanChartBubbleSeriesPane.java
  18. 74
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartHeatValueColorPane.java
  19. 153
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartValueColorPane.java
  20. 53
      designer-chart/src/main/java/com/fr/van/chart/designer/style/HeatMapRangeLegendPane.java
  21. 155
      designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartRangeLegendPane.java
  22. 173
      designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartColorValueSeriesPane.java
  23. 48
      designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/style/VanChartHeatMapSeriesPane.java
  24. 19
      designer-chart/src/main/java/com/fr/van/chart/map/VanChartMapSeriesPane.java
  25. 31
      designer-chart/src/main/java/com/fr/van/chart/range/component/GradualLegendPane.java
  26. 48
      designer-chart/src/main/java/com/fr/van/chart/range/component/LegendLabelFormatPane.java
  27. 11
      designer-chart/src/main/java/com/fr/van/chart/range/component/SectionIntervalConfigPaneWithOutNum.java
  28. 51
      designer-chart/src/main/java/com/fr/van/chart/range/component/SectionLegendPane.java
  29. 4
      designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterSeriesPane.java
  30. 10
      designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudSeriesPane.java
  31. BIN
      designer-chart/src/main/resources/com/fr/van/chart/box.images/box.png
  32. 5
      designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java
  33. 15
      designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java
  34. 8
      designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java
  35. 17
      designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java
  36. 1
      designer-form/src/main/java/com/fr/design/mainframe/JForm.java
  37. 2
      designer-form/src/main/java/com/fr/design/parameter/ParameterPropertyPane.java
  38. 46
      designer-form/src/test/java/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapterTest.java
  39. 87
      designer-realize/src/main/java/com/fr/design/dscolumn/DSColumnAdvancedPane.java
  40. 26
      designer-realize/src/main/java/com/fr/design/parameter/ParameterDefinitePane.java
  41. 2
      designer-realize/src/main/java/com/fr/grid/GridUI.java
  42. 72
      designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java
  43. 4
      pom.xml

5
designer-base/src/main/java/com/fr/design/actions/TableDataSourceAction.java

@ -15,6 +15,7 @@ import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.DialogActionAdapter;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; import java.util.Map;
/* /*
@ -51,6 +52,10 @@ public class TableDataSourceAction extends TemplateComponentAction<JTemplate<?,
reportTableDataDialog.setDoOKSucceed(false); reportTableDataDialog.setDoOKSucceed(false);
return; return;
} }
Iterator<String> iterator = tds.getTableDataNameIterator();
while (iterator.hasNext()) {
DesignTableDataManager.removeSelectedColumnNames(iterator.next());
}
DesignModelAdapter.getCurrentModelAdapter().renameTableData(tableDataPane.getDsNameChangedMap()); DesignModelAdapter.getCurrentModelAdapter().renameTableData(tableDataPane.getDsNameChangedMap());
tableDataPane.update(tds); tableDataPane.update(tds);
TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()); TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter());

7
designer-base/src/main/java/com/fr/design/actions/server/GlobalTableDataAction.java

@ -5,7 +5,6 @@ package com.fr.design.actions.server;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.base.TableData; import com.fr.base.TableData;
import com.fr.config.Configuration;
import com.fr.design.DesignModelAdapter; import com.fr.design.DesignModelAdapter;
import com.fr.design.actions.UpdateAction; import com.fr.design.actions.UpdateAction;
import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.DesignTableDataManager;
@ -18,12 +17,10 @@ import com.fr.design.gui.NameInspector;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.DesignerFrame; import com.fr.design.mainframe.DesignerFrame;
import com.fr.design.menu.MenuKeySet; import com.fr.design.menu.MenuKeySet;
import com.fr.file.ProcedureConfig;
import com.fr.file.TableDataConfig; import com.fr.file.TableDataConfig;
import com.fr.transaction.CallBackAdaptor; import com.fr.transaction.CallBackAdaptor;
import com.fr.transaction.Configurations; import com.fr.transaction.Configurations;
import com.fr.transaction.Worker;
import com.fr.transaction.WorkerFacade; import com.fr.transaction.WorkerFacade;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
@ -95,6 +92,10 @@ public class GlobalTableDataAction extends UpdateAction implements ResponseDataS
} }
DesignTableDataManager.clearGlobalDs(); DesignTableDataManager.clearGlobalDs();
// 保存时 移除服务器数据集列名缓存
for (String name : tableDataConfig.getTableDatas().keySet()) {
DesignTableDataManager.removeSelectedColumnNames(name);
}
Configurations.modify(new WorkerFacade(TableDataConfig.class) { Configurations.modify(new WorkerFacade(TableDataConfig.class) {
@Override @Override

18
designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTableModel.java

@ -17,6 +17,10 @@ import javax.swing.table.AbstractTableModel;
* 这个TableModel主要是预览数据的. 字段TableData必须转化为内置的 * 这个TableModel主要是预览数据的. 字段TableData必须转化为内置的
*/ */
public class PreviewTableModel extends AbstractTableModel { public class PreviewTableModel extends AbstractTableModel {
private static final int LEN_LIMIT = 1000;
private static final String THREE_DOT = "...";
private DataModel dataModel; private DataModel dataModel;
private String erroMessage = null; private String erroMessage = null;
@ -127,11 +131,21 @@ public class PreviewTableModel extends AbstractTableModel {
public Object getValueAt(int row, int column) { public Object getValueAt(int row, int column) {
try { try {
return dataModel.getValueAt(row, column); Object value = dataModel.getValueAt(row, column);
if (value != null) {
String strValue = value.toString();
// 字符长度过长 swing会卡住一会
// 同时设计器内预览展示也不需要展示太长的字符
if (strValue.length() > LEN_LIMIT) {
strValue = strValue.substring(0, LEN_LIMIT) + THREE_DOT;
return strValue;
}
}
return value;
} catch (TableDataException e) { } catch (TableDataException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e); FineLoggerFactory.getLogger().error(e.getMessage(), e);
DesignUtils.errorMessage(e.getMessage()); DesignUtils.errorMessage(e.getMessage());
return ""; return StringUtils.EMPTY;
} }
} }

4
designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java

@ -29,7 +29,6 @@ import com.fr.design.gui.itableeditorpane.UITableEditorPane;
import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.gui.itoolbar.UIToolbar;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants;
import com.fr.design.gui.syntax.ui.rtextarea.RTextScrollPane; import com.fr.design.gui.syntax.ui.rtextarea.RTextScrollPane;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.menu.SeparatorDef; import com.fr.design.menu.SeparatorDef;
import com.fr.design.menu.ToolBarDef; import com.fr.design.menu.ToolBarDef;
@ -316,7 +315,8 @@ public class DBTableDataPane extends AbstractTableDataPane<DBTableData> {
// com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Connect_SQL_Cannot_Null") + "."); // com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Connect_SQL_Cannot_Null") + ".");
} }
} }
// 保存前 刷新下参数列表 保证获取到最新的参数
refresh();
List<ParameterProvider> parameterList = editorPane.update(); List<ParameterProvider> parameterList = editorPane.update();
Parameter[] parameters = parameterList.toArray(new Parameter[parameterList.size()]); Parameter[] parameters = parameterList.toArray(new Parameter[parameterList.size()]);

2
designer-base/src/main/java/com/fr/design/env/RemoteWorkspace.java vendored

@ -1,6 +1,6 @@
package com.fr.design.env; package com.fr.design.env;
import com.fr.cluster.engine.remote.ClusterOperator; import com.fr.cluster.engine.rpc.remote.ClusterOperator;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.rpc.ExceptionHandler; import com.fr.rpc.ExceptionHandler;

2
designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java

@ -226,6 +226,8 @@ public class TemplateTreePane extends JPanel implements FileOperations {
*/ */
@Override @Override
public void refresh() { public void refresh() {
// 刷新远程文件夹权限
NodeAuthProcessor.getInstance().refresh();
reportletsTree.refresh(); reportletsTree.refresh();
FineLoggerFactory.getLogger().info(Toolkit.i18nText("Fine-Design_Basic_Template_File_Tree_Refresh_Successfully") + "!"); FineLoggerFactory.getLogger().info(Toolkit.i18nText("Fine-Design_Basic_Template_File_Tree_Refresh_Successfully") + "!");
} }

20
designer-base/src/main/java/com/fr/design/formula/FormulaPane.java

@ -1008,15 +1008,23 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
this.searchKey = searchKey.toLowerCase(); this.searchKey = searchKey.toLowerCase();
} }
/**
* 把以关键词开头的和不以关键词开头的分别按照字母表顺序排序
* @param o1 待比较对象1
* @param o2 待比较对象2
* @return 比较结果1表示 o1 > o2, -1表示 o1 < o2, 0表示 o1 = o2
*/
@Override @Override
public int compare(String o1, String o2) { public int compare(String o1, String o2) {
if (o1.toLowerCase().startsWith(searchKey)) { int result;
return -1; boolean o1StartWith = o1.toLowerCase().startsWith(searchKey);
} boolean o2StartWith = o2.toLowerCase().startsWith(searchKey);
if (o2.toLowerCase().startsWith(searchKey)) { if (o1StartWith) {
return 1; result = o2StartWith ? o1.compareTo(o2) : -1;
} else {
result = o2StartWith ? 1 : o1.compareTo(o2);
} }
return o2.compareTo(o1); return result;
} }
} }

73
designer-base/src/main/java/com/fr/design/formula/FormulaTextField.java

@ -0,0 +1,73 @@
package com.fr.design.formula;
import com.fr.base.BaseFormula;
import com.fr.design.gui.itextfield.DictionaryTextField;
import com.fr.stable.StringUtils;
import javax.swing.text.Document;
/**
* 公式展示时使用
* 展示 String.
* 但实际保存的是 BaseFormula
* 从而保留公式的形态
*
* created by Harrison on 2020/08/03
**/
public class FormulaTextField extends DictionaryTextField<BaseFormula> {
private static final BaseFormula EMPTY_FORMULA = BaseFormula.createFormulaBuilder().build("=");
public FormulaTextField() {
}
public FormulaTextField(int columns) {
super(columns);
}
public FormulaTextField(String text, int columns, BaseFormula value) {
super(text, columns, value);
}
public FormulaTextField(String text, BaseFormula value) {
super(text, value);
}
public FormulaTextField(Document doc, String text, int columns, BaseFormula value) {
super(doc, text, columns, value);
}
@Override
public BaseFormula getValue() {
if (this.value == null) {
this.value = createDefault();
}
return this.value;
}
/**
* 设置值时会将展示的公式值一同设置进去
*
* @param value 公式值
*/
@Override
public void setValue(BaseFormula value) {
this.value = value;
if (this.value == null) {
this.value = createDefault();
}
setText(this.value.getPureContent());
}
private BaseFormula createDefault() {
String text = getText();
if (StringUtils.isNotEmpty(text)) {
return BaseFormula.createFormulaBuilder().build(text);
} else {
return EMPTY_FORMULA;
}
}
}

25
designer-base/src/main/java/com/fr/design/formula/SortFormulaPane.java

@ -7,12 +7,13 @@ import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.SortOrderComboBox; import com.fr.design.gui.icombobox.SortOrderComboBox;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.JComponent;
import javax.swing.*; import javax.swing.JPanel;
import java.awt.*; import javax.swing.SwingUtilities;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -20,7 +21,7 @@ public abstract class SortFormulaPane extends JPanel {
protected static final String InsetText = " "; protected static final String InsetText = " ";
protected SortOrderComboBox sortOrderComboBox; protected SortOrderComboBox sortOrderComboBox;
protected UITextField sortFormulaTextField; protected FormulaTextField sortFormulaTextField;
// 屏蔽掉“自定义比较规则”和“选择”按钮,只显示公式输入文本和公式按钮 // 屏蔽掉“自定义比较规则”和“选择”按钮,只显示公式输入文本和公式按钮
protected UIButton sortFormulaTextFieldButton; protected UIButton sortFormulaTextFieldButton;
@ -35,7 +36,7 @@ public abstract class SortFormulaPane extends JPanel {
} }
}); });
sortFormulaTextField = new UITextField(16); sortFormulaTextField = new FormulaTextField(16);
//Lance:添加一公式编辑器按钮 //Lance:添加一公式编辑器按钮
sortFormulaTextFieldButton = new UIButton("..."); sortFormulaTextFieldButton = new UIButton("...");
sortFormulaTextFieldButton.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Formula") + "..."); sortFormulaTextFieldButton.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Formula") + "...");
@ -55,17 +56,15 @@ public abstract class SortFormulaPane extends JPanel {
public abstract void formulaAction(); public abstract void formulaAction();
public void showFormulaDialog(String[] displayNames) { public void showFormulaDialog(String[] displayNames) {
String text = sortFormulaTextField.getText(); BaseFormula value = sortFormulaTextField.getValue();
final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula(); final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula();
formulaPane.populate(BaseFormula.createFormulaBuilder().build(text), new CustomVariableResolver(displayNames, true)); formulaPane.populate(value, new CustomVariableResolver(displayNames, true));
formulaPane.showLargeWindow(SwingUtilities.getWindowAncestor(SortFormulaPane.this), formulaPane.showLargeWindow(SwingUtilities.getWindowAncestor(SortFormulaPane.this),
new DialogActionAdapter() { new DialogActionAdapter() {
public void doOk() { public void doOk() {
BaseFormula fm = formulaPane.update(); BaseFormula fm = formulaPane.update();
if (fm.getContent().length() <= 1) { if (fm != null) {
sortFormulaTextField.setText(""); sortFormulaTextField.setValue(fm);
} else {
sortFormulaTextField.setText(fm.getContent().substring(1));
} }
} }
}).setVisible(true); }).setVisible(true);

45
designer-base/src/main/java/com/fr/design/gui/itextfield/DictionaryTextField.java

@ -0,0 +1,45 @@
package com.fr.design.gui.itextfield;
import javax.swing.text.Document;
/**
* 文字 ui.
* 保存实际值展示值
* 允许实际值和展示值不同
*
* created by Harrison on 2020/08/03
**/
public class DictionaryTextField<T> extends UITextField {
protected T value;
public DictionaryTextField() {
}
public DictionaryTextField(int columns) {
super(columns);
}
public DictionaryTextField(String text, int columns, T value) {
super(text, columns);
this.value = value;
}
public DictionaryTextField(String text, T value) {
super(text);
this.value = value;
}
public DictionaryTextField(Document doc, String text, int columns, T value) {
super(doc, text, columns);
this.value = value;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}

2
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rtextarea/RTextAreaBase.java

@ -25,6 +25,7 @@ import javax.swing.JTextArea;
import javax.swing.event.CaretEvent; import javax.swing.event.CaretEvent;
import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.TextUI; import javax.swing.plaf.TextUI;
import javax.swing.plaf.basic.BasicBorders;
import javax.swing.text.AbstractDocument; import javax.swing.text.AbstractDocument;
import javax.swing.text.BadLocationException; import javax.swing.text.BadLocationException;
import javax.swing.text.Caret; import javax.swing.text.Caret;
@ -645,6 +646,7 @@ int currentCaretY; // Used to know when to rehighlight current line.
setTabsEmulated(false); setTabsEmulated(false);
// Stuff needed by the caret listener below. // Stuff needed by the caret listener below.
setBorder(new BasicBorders.MarginBorder());
previousCaretY = currentCaretY = getInsets().top; previousCaretY = currentCaretY = getInsets().top;
// Stuff to highlight the current line. // Stuff to highlight the current line.

4
designer-base/src/main/java/com/fr/design/parameter/ParameterDesignerProvider.java

@ -50,6 +50,10 @@ public interface ParameterDesignerProvider {
void addingAllParameter2Editor(Parameter[] parameterArray, int currentIndex); void addingAllParameter2Editor(Parameter[] parameterArray, int currentIndex);
default int addingAllParameter2EditorWithReturnValue(Parameter[] parameterArray, int currentIndex) {
return 0;
}
JPanel[] toolbarPanes4Form(); JPanel[] toolbarPanes4Form();
JComponent[] toolBarButton4Form(); JComponent[] toolBarButton4Form();

10
designer-base/src/test/java/com/fr/design/formula/FormulaPaneTest.java

@ -22,4 +22,12 @@ public class FormulaPaneTest extends TestCase {
Assert.assertArrayEquals(result, strs); Assert.assertArrayEquals(result, strs);
} }
} @Test
public void test4SimilarComparator() {
String[] strs = new String[]{"TESTB", "TESTACD", "Ftest", "Gtest", "TEST"};
String[] result = new String[]{"TEST", "TESTACD", "TESTB", "Ftest", "Gtest"};
Arrays.sort(strs, new FormulaPane.SimilarComparator("test"));
Assert.assertArrayEquals(result, strs);
}
}

18
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java

@ -18,7 +18,6 @@ import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.style.color.ColorControlWindow; import com.fr.design.style.color.ColorControlWindow;
import com.fr.design.style.color.ColorSelectBox; import com.fr.design.style.color.ColorSelectBox;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.TableLayout4VanChartHelper;
@ -29,6 +28,8 @@ import javax.swing.JPanel;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import java.util.ArrayList;
import java.util.List;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color; import java.awt.Color;
import java.awt.Component; import java.awt.Component;
@ -40,8 +41,6 @@ import java.awt.LayoutManager;
import java.awt.Point; import java.awt.Point;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
public class UIColorPickerPane extends BasicPane implements UIObserver { public class UIColorPickerPane extends BasicPane implements UIObserver {
private static final int MARGIN_TOP = 7; private static final int MARGIN_TOP = 7;
@ -635,7 +634,7 @@ public class UIColorPickerPane extends BasicPane implements UIObserver {
@Override @Override
public void layoutContainer(Container parent) { public void layoutContainer(Container parent) {
upControlPane.setBounds(MARGIN_LEFT, MARGIN_TOP, UPCONTROLPANE_WIDTH, upControlPane.getPreferredSize().height); upControlPane.setBounds(getBoundX(), getBoundY(), getBoundWidth(), upControlPane.getPreferredSize().height);
colorGroup.setBounds(COLORGROUP_MARGIN_LEFT, 2 * MARGIN_TOP + upControlPane.getPreferredSize().height + LAYOUR_DET, colorGroup.getPreferredSize().width, colorGroup.getPreferredSize().height + upControlPane.getPreferredSize().height); colorGroup.setBounds(COLORGROUP_MARGIN_LEFT, 2 * MARGIN_TOP + upControlPane.getPreferredSize().height + LAYOUR_DET, colorGroup.getPreferredSize().width, colorGroup.getPreferredSize().height + upControlPane.getPreferredSize().height);
textGroup.setBounds(colorGroup.getPreferredSize().width + COLORGROUP_MARGIN_LEFT, MARGIN_TOP + upControlPane.getPreferredSize().height + LAYOUR_DET, textGroup.getPreferredSize().width, textGroup.getPreferredSize().height); textGroup.setBounds(colorGroup.getPreferredSize().width + COLORGROUP_MARGIN_LEFT, MARGIN_TOP + upControlPane.getPreferredSize().height + LAYOUR_DET, textGroup.getPreferredSize().width, textGroup.getPreferredSize().height);
} }
@ -646,6 +645,17 @@ public class UIColorPickerPane extends BasicPane implements UIObserver {
} }
}; };
protected int getBoundX() {
return MARGIN_LEFT;
}
protected int getBoundY() {
return MARGIN_TOP;
}
protected int getBoundWidth() {
return UPCONTROLPANE_WIDTH;
}
/** /**
*刷新颜色选取器 *刷新颜色选取器

4
designer-chart/src/main/java/com/fr/van/chart/box/data/report/BoxPlotReportDataContentPane.java

@ -37,13 +37,14 @@ public class BoxPlotReportDataContentPane extends AbstractReportDataContentPane
this.add(createSeriesPane(parent), BorderLayout.CENTER); this.add(createSeriesPane(parent), BorderLayout.CENTER);
initDataTypeListener(); initDataTypeListener();
checkDataPaneVisible();
} }
private JPanel createDataTypePane() { private JPanel createDataTypePane() {
JPanel pane = new JPanel(new BorderLayout(4, 0)); JPanel pane = new JPanel(new BorderLayout(4, 0));
pane.setBorder(BorderFactory.createMatteBorder(0, 0, 6, 1, getBackground())); pane.setBorder(BorderFactory.createMatteBorder(0, 0, 6, 1, getBackground()));
UILabel label = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Data_Type")); UILabel label = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Data_Form"));
label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH, ChartDataPane.LABEL_HEIGHT)); label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH, ChartDataPane.LABEL_HEIGHT));
String[] names = new String[]{ String[] names = new String[]{
@ -52,6 +53,7 @@ public class BoxPlotReportDataContentPane extends AbstractReportDataContentPane
}; };
dataType = new UIButtonGroup(names); dataType = new UIButtonGroup(names);
dataType.setSelectedIndex(0);
dataType.setPreferredSize(new Dimension(100, 20)); dataType.setPreferredSize(new Dimension(100, 20));
pane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{dataType, null, null, label, null})); pane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{dataType, null, null, label, null}));

3
designer-chart/src/main/java/com/fr/van/chart/box/data/table/BoxPlotTableDataContentPane.java

@ -54,7 +54,7 @@ public class BoxPlotTableDataContentPane extends AbstractTableDataContentPane {
JPanel pane = new JPanel(new BorderLayout(4, 0)); JPanel pane = new JPanel(new BorderLayout(4, 0));
pane.setBorder(BorderFactory.createMatteBorder(0, 0, 6, 1, getBackground())); pane.setBorder(BorderFactory.createMatteBorder(0, 0, 6, 1, getBackground()));
UILabel label = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Data_Type")); UILabel label = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Data_Form"));
label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH, ChartDataPane.LABEL_HEIGHT)); label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH, ChartDataPane.LABEL_HEIGHT));
String[] names = new String[]{ String[] names = new String[]{
@ -63,6 +63,7 @@ public class BoxPlotTableDataContentPane extends AbstractTableDataContentPane {
}; };
dataType = new UIButtonGroup(names); dataType = new UIButtonGroup(names);
dataType.setSelectedIndex(0);
dataType.setPreferredSize(new Dimension(100, 20)); dataType.setPreferredSize(new Dimension(100, 20));
pane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{dataType, null, null, label, null})); pane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{dataType, null, null, label, null}));

6
designer-chart/src/main/java/com/fr/van/chart/bubble/VanChartBubbleSeriesPane.java

@ -2,8 +2,8 @@ package com.fr.van.chart.bubble;
import com.fr.chart.chartattr.Plot; import com.fr.chart.chartattr.Plot;
import com.fr.chart.chartglyph.ConditionAttr; import com.fr.chart.chartglyph.ConditionAttr;
import com.fr.design.i18n.Toolkit;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartStylePane; import com.fr.design.mainframe.chart.gui.ChartStylePane;
@ -12,7 +12,7 @@ import com.fr.plugin.chart.bubble.attr.VanChartAttrBubble;
import com.fr.van.chart.bubble.component.VanChartBubblePane; import com.fr.van.chart.bubble.component.VanChartBubblePane;
import com.fr.van.chart.custom.component.VanChartCustomAxisConditionPane; import com.fr.van.chart.custom.component.VanChartCustomAxisConditionPane;
import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.series.VanChartAbstractPlotSeriesPane; import com.fr.van.chart.designer.style.series.VanChartColorValueSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartStackedAndAxisListControlPane; import com.fr.van.chart.designer.style.series.VanChartStackedAndAxisListControlPane;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -22,7 +22,7 @@ import java.awt.Component;
/** /**
* Created by Mitisky on 16/3/31. * Created by Mitisky on 16/3/31.
*/ */
public class VanChartBubbleSeriesPane extends VanChartAbstractPlotSeriesPane { public class VanChartBubbleSeriesPane extends VanChartColorValueSeriesPane {
private static final long serialVersionUID = 5595016643808487932L; private static final long serialVersionUID = 5595016643808487932L;
private VanChartBubblePane bubblePane; private VanChartBubblePane bubblePane;

74
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartHeatValueColorPane.java

@ -0,0 +1,74 @@
package com.fr.van.chart.designer.component;
import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
import com.fr.design.gui.frpane.UINumberDragPane;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.ColorSelectBoxWithOutTransparent;
import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula;
import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.designer.style.axis.component.MinMaxValuePaneWithOutTick;
import com.fr.van.chart.range.component.GradualIntervalConfigPane;
import com.fr.van.chart.range.component.GradualLegendPane;
import com.fr.van.chart.range.component.LegendGradientBar;
import com.fr.van.chart.range.component.SectionIntervalConfigPaneWithOutNum;
import com.fr.van.chart.range.component.SectionLegendPane;
import java.awt.Component;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-08-04
*/
public class VanChartHeatValueColorPane extends VanChartValueColorPane {
public VanChartHeatValueColorPane(VanChartStylePane parent) {
super(parent);
}
protected GradualLegendPane createGradualLegendPane() {
return new GradualLegendPane() {
@Override
protected GradualIntervalConfigPane createGradualIntervalConfigPane() {
return new GradualIntervalConfigPane() {
@Override
protected Component[][] getPaneComponents(MinMaxValuePaneWithOutTick minMaxValuePane, ColorSelectBoxWithOutTransparent colorSelectBox, UINumberDragPane numberDragPane, LegendGradientBar legendGradientBar) {
return new Component[][]{
new Component[]{minMaxValuePane, null},
new Component[]{new BoldFontTextLabel(Toolkit.i18nText("Fine-Design_Chart_Value_Divided_Stage")), numberDragPane},
new Component[]{null, legendGradientBar}
};
}
};
}
};
}
protected SectionLegendPane createSectionLegendPane() {
return new SectionLegendPane(getVanChartStylePane()) {
@Override
protected MapColorPickerPaneWithFormula createSectionIntervalConfigPane(AbstractAttrNoScrollPane parent) {
return new SectionIntervalConfigPaneWithOutNum(parent) {
private static final int WIDTH = 227;
@Override
protected int getBoundX() {
return 0;
}
@Override
protected int getBoundY() {
return 0;
}
@Override
protected int getBoundWidth() {
return WIDTH;
}
};
}
};
}
}

153
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartValueColorPane.java

@ -0,0 +1,153 @@
package com.fr.van.chart.designer.component;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.PaneTitleConstants;
import com.fr.design.widget.FRWidgetFactory;
import com.fr.plugin.chart.range.VanChartRangeLegend;
import com.fr.plugin.chart.type.LegendType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.range.component.GradualLegendPane;
import com.fr.van.chart.range.component.SectionLegendPane;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-08-03
*/
public class VanChartValueColorPane extends BasicPane {
//颜色类型切换按钮
private UIButtonGroup<LegendType> valueColorTypeButton;
//连续渐变面板
private GradualLegendPane gradualLegendPane;
//区域渐变面板
private SectionLegendPane sectionLegendPane;
private VanChartStylePane parent;
private JPanel rangeLegendPane;
public VanChartValueColorPane(VanChartStylePane parent) {
this.parent = parent;
initComponents();
}
public VanChartStylePane getVanChartStylePane() {
return parent;
}
public void initComponents() {
valueColorTypeButton = createLegendTypeButton();
valueColorTypeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
checkCardPane();
}
});
valueColorTypeButton.setSelectedIndex(0);
UILabel label = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Chart_Color_Type"));
Component[][] labelComponent = new Component[][]{
new Component[]{label, valueColorTypeButton},
};
JPanel legendTypeButtonWithTilePane = TableLayout4VanChartHelper.createGapTableLayoutPane(labelComponent);
legendTypeButtonWithTilePane.setBorder(BorderFactory.createEmptyBorder(10,0,0,0));
//渐变色图例面板
gradualLegendPane = createGradualLegendPane();
//区域段图例面板
sectionLegendPane = createSectionLegendPane();
rangeLegendPane = new JPanel(new CardLayout()) {
@Override
public Dimension getPreferredSize() {
if (valueColorTypeButton.getSelectedItem() == LegendType.GRADUAL) {
return gradualLegendPane.getPreferredSize();
} else {
return sectionLegendPane.getPreferredSize();
}
}
};
rangeLegendPane.add(gradualLegendPane, LegendType.GRADUAL.getStringType());
rangeLegendPane.add(sectionLegendPane, LegendType.SECTION.getStringType());
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] col = {f};
double[] row = {p, p};
Component[][] components = new Component[][]{
new Component[]{legendTypeButtonWithTilePane},
new Component[]{rangeLegendPane}
};
JPanel tableLayoutPane = TableLayoutHelper.createTableLayoutPane(components, row, col);
this.setLayout(new BorderLayout());
this.add(tableLayoutPane, BorderLayout.CENTER);
}
private void checkCardPane() {
CardLayout cardLayout = (CardLayout) rangeLegendPane.getLayout();
cardLayout.show(rangeLegendPane, valueColorTypeButton.getSelectedItem().getStringType());
this.validate();
this.repaint();
}
private UIButtonGroup<LegendType> createLegendTypeButton() {
return new UIButtonGroup<>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Continuous_Gradient"),
Toolkit.i18nText("Fine-Design_Chart_Area_Gradient")
}, new LegendType[]{LegendType.GRADUAL, LegendType.SECTION});
}
protected GradualLegendPane createGradualLegendPane() {
return new GradualLegendPane();
}
protected SectionLegendPane createSectionLegendPane() {
return new SectionLegendPane(parent);
}
/**
* 标题
*
* @return 标题
*/
public String title4PopupWindow() {
return PaneTitleConstants.CHART_STYLE_SERIES_TITLE;
}
public void updateBean(VanChartRangeLegend legend) {
LegendType legendType = valueColorTypeButton.getSelectedItem();
legend.setLegendType(legendType);
if (legendType == LegendType.GRADUAL) {
gradualLegendPane.update(legend.getGradualLegend());
} else if (legendType == LegendType.SECTION) {
sectionLegendPane.update(legend.getSectionLegend());
}
}
public void populateBean(VanChartRangeLegend legend) {
//范围图例部分
if (legend.getLegendType() != LegendType.ORDINARY) {
valueColorTypeButton.setSelectedItem(legend.getLegendType());
}
gradualLegendPane.populate(legend.getGradualLegend());
sectionLegendPane.populate(legend.getSectionLegend());
checkCardPane();
}
}

53
designer-chart/src/main/java/com/fr/van/chart/designer/style/HeatMapRangeLegendPane.java

@ -1,22 +1,6 @@
package com.fr.van.chart.designer.style; package com.fr.van.chart.designer.style;
import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
import com.fr.design.gui.frpane.UINumberDragPane;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.i18n.Toolkit;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.mainframe.chart.gui.ColorSelectBoxWithOutTransparent;
import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula;
import com.fr.plugin.chart.type.LegendType;
import com.fr.van.chart.designer.style.axis.component.MinMaxValuePaneWithOutTick;
import com.fr.van.chart.range.component.GradualIntervalConfigPane;
import com.fr.van.chart.range.component.GradualLegendPane;
import com.fr.van.chart.range.component.LegendGradientBar;
import com.fr.van.chart.range.component.SectionIntervalConfigPaneWithOutNum;
import com.fr.van.chart.range.component.SectionLegendPane;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.Component;
/** /**
* Created by Mitisky on 16/10/20. * Created by Mitisky on 16/10/20.
@ -35,41 +19,4 @@ public class HeatMapRangeLegendPane extends VanChartRangeLegendPane {
protected JPanel createCommonLegendPane(){ protected JPanel createCommonLegendPane(){
return this.createLegendPaneWithoutHighlight(); return this.createLegendPaneWithoutHighlight();
} }
@Override
protected UIButtonGroup<LegendType> createLegendTypeButton(){
return new UIButtonGroup<LegendType>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Legend_Gradual"),
Toolkit.i18nText("Fine-Design_Chart_Legend_Section")
}, new LegendType[]{LegendType.GRADUAL, LegendType.SECTION});
}
@Override
protected GradualLegendPane createGradualLegendPane() {
return new GradualLegendPane(){
@Override
protected GradualIntervalConfigPane createGradualIntervalConfigPane() {
return new GradualIntervalConfigPane(){
@Override
protected Component[][] getPaneComponents(MinMaxValuePaneWithOutTick minMaxValuePane, ColorSelectBoxWithOutTransparent colorSelectBox, UINumberDragPane numberDragPane, LegendGradientBar legendGradientBar) {
return new Component[][]{
new Component[]{minMaxValuePane, null},
new Component[]{new BoldFontTextLabel(Toolkit.i18nText("Fine-Design_Chart_Value_Divided_Stage")), numberDragPane},
new Component[]{null, legendGradientBar}
};
}
};
}
};
}
@Override
protected SectionLegendPane createSectionLegendPane() {
return new SectionLegendPane(this.getLegendPaneParent()) {
@Override
protected MapColorPickerPaneWithFormula createSectionIntervalConfigPane(AbstractAttrNoScrollPane parent) {
return new SectionIntervalConfigPaneWithOutNum(parent);
}
};
}
} }

155
designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartRangeLegendPane.java

@ -1,24 +1,18 @@
package com.fr.van.chart.designer.style; package com.fr.van.chart.designer.style;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.plugin.chart.attr.VanChartLegend; import com.fr.plugin.chart.attr.VanChartLegend;
import com.fr.plugin.chart.range.SectionLegend;
import com.fr.plugin.chart.range.VanChartRangeLegend; import com.fr.plugin.chart.range.VanChartRangeLegend;
import com.fr.plugin.chart.type.LegendType; import com.fr.plugin.chart.type.LegendType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.range.component.LegendLabelFormatPane;
import com.fr.van.chart.range.component.GradualLegendPane;
import com.fr.van.chart.range.component.SectionLegendPane;
import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.CardLayout; import java.awt.CardLayout;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/** /**
@ -28,87 +22,63 @@ public class VanChartRangeLegendPane extends VanChartPlotLegendPane {
private static final long serialVersionUID = 1614283200308877353L; private static final long serialVersionUID = 1614283200308877353L;
//散点图不同类型面板容器,容器布局管理 //散点图不同类型面板容器,容器布局管理
private JPanel rangeLegendPane; private JPanel rangeLabelPane;
//图例切换按钮
private UIButtonGroup<LegendType> legendTypeButton;
//普通图例面板(因为普通图例没有新内容,故而为空) //普通图例面板(因为普通图例没有新内容,故而为空)
private JPanel ordinaryLegendPane; private JPanel ordinaryLabelPane;
//渐变色图例面板
private GradualLegendPane gradualLegendPane; private LegendLabelFormatPane gradualLabelFormPane;
//区域段图例面板
private SectionLegendPane sectionLegendPane; private LegendLabelFormatPane sectionLabelFormPane;
private LegendType legendType;
public VanChartRangeLegendPane() { public VanChartRangeLegendPane() {
super(); super();
} }
public VanChartRangeLegendPane(VanChartStylePane parent){
public VanChartRangeLegendPane(VanChartStylePane parent) {
super(parent); super(parent);
} }
private JPanel createRangeLegendPane() {
//普通图例面板 private JPanel createRangeLabelPane() {
ordinaryLegendPane = new JPanel(); ordinaryLabelPane = new JPanel();
//渐变色图例面板 gradualLabelFormPane = new LegendLabelFormatPane();
gradualLegendPane = createGradualLegendPane(); gradualLabelFormPane.setParentPane(this.getLegendPaneParent());
gradualLegendPane.setParentPane(this.getLegendPaneParent()); sectionLabelFormPane = new LegendLabelFormatPane() {
//区域段图例面板 @Override
sectionLegendPane = createSectionLegendPane(); protected void checkCustomLabelText() {
sectionLegendPane.setParentPane(this.getLegendPaneParent()); setCustomFormatterText(SectionLegend.DEFAULT_LABEL_FUNCTION);
}
JPanel panel = new JPanel(new CardLayout()){ };
sectionLabelFormPane.setParentPane(this.getLegendPaneParent());
JPanel panel = new JPanel(new CardLayout()) {
@Override @Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
if(legendTypeButton.getSelectedItem() == LegendType.ORDINARY){ if (legendType == LegendType.ORDINARY) {
return new Dimension(ordinaryLegendPane.getWidth(), 0); return new Dimension(ordinaryLabelPane.getWidth(), 0);
} else if (legendTypeButton.getSelectedItem() == LegendType.GRADUAL){ } else if (legendType == LegendType.GRADUAL) {
return gradualLegendPane.getPreferredSize(); return gradualLabelFormPane.getPreferredSize();
}else{ } else {
return sectionLegendPane.getPreferredSize(); return sectionLabelFormPane.getPreferredSize();
} }
} }
}; };
panel.add(ordinaryLegendPane, LegendType.ORDINARY.getStringType()); panel.add(ordinaryLabelPane, LegendType.ORDINARY.getStringType());
panel.add(gradualLegendPane, LegendType.GRADUAL.getStringType()); panel.add(gradualLabelFormPane, LegendType.GRADUAL.getStringType());
panel.add(sectionLegendPane, LegendType.SECTION.getStringType()); panel.add(sectionLabelFormPane, LegendType.SECTION.getStringType());
return panel; return panel;
} }
protected GradualLegendPane createGradualLegendPane() { protected JPanel createCommonLegendPane() {
return new GradualLegendPane();
}
protected SectionLegendPane createSectionLegendPane() {
return new SectionLegendPane(this.getLegendPaneParent());
}
private JPanel createTableLayoutPaneWithTitle(String title, Component component) {
return TableLayout4VanChartHelper.createGapTableLayoutPane(title, component);
}
protected UIButtonGroup<LegendType> createLegendTypeButton(){
return new UIButtonGroup<LegendType>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Legend_Ordinary"),
Toolkit.i18nText("Fine-Design_Chart_Legend_Gradual"),
Toolkit.i18nText("Fine-Design_Chart_Legend_Section")
}, new LegendType[]{LegendType.ORDINARY, LegendType.GRADUAL, LegendType.SECTION});
}
protected JPanel createCommonLegendPane(){
return super.createLegendPane(); return super.createLegendPane();
} }
@Override @Override
protected JPanel createLegendPane(){ protected JPanel createLegendPane() {
legendTypeButton = createLegendTypeButton(); rangeLabelPane = createRangeLabelPane();
initLegendTypeButtonListener();
JPanel legendTypeButtonWithTilePane = createTableLayoutPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Legend_Form"), legendTypeButton);
legendTypeButtonWithTilePane.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
rangeLegendPane = createRangeLegendPane();
//不包含新内容的普通面板内容 //不包含新内容的普通面板内容
JPanel commonLegendPane = this.createCommonLegendPane(); JPanel commonLegendPane = this.createCommonLegendPane();
@ -116,28 +86,17 @@ public class VanChartRangeLegendPane extends VanChartPlotLegendPane {
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
double[] col = {f}; double[] col = {f};
double[] row = {p, p, p, p}; double[] row = {p, p};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{legendTypeButtonWithTilePane}, new Component[]{rangeLabelPane},
new Component[]{rangeLegendPane},
new Component[]{commonLegendPane} new Component[]{commonLegendPane}
}; };
return TableLayoutHelper.createTableLayoutPane(components,row,col); return TableLayoutHelper.createTableLayoutPane(components, row, col);
}
private void initLegendTypeButtonListener() {
legendTypeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
checkCardPane();
checkLayoutPaneVisible();
}
});
} }
private void checkCardPane() { private void checkCardPane() {
CardLayout cardLayout = (CardLayout) rangeLegendPane.getLayout(); CardLayout cardLayout = (CardLayout) rangeLabelPane.getLayout();
cardLayout.show(rangeLegendPane, legendTypeButton.getSelectedItem().getStringType()); cardLayout.show(rangeLabelPane, legendType.getStringType());
} }
@Override @Override
@ -151,47 +110,41 @@ public class VanChartRangeLegendPane extends VanChartPlotLegendPane {
protected boolean isVisibleLayoutPane() { protected boolean isVisibleLayoutPane() {
return super.isVisibleLayoutPane() && legendTypeButton.getSelectedItem() != LegendType.GRADUAL; return super.isVisibleLayoutPane() && legendType != LegendType.GRADUAL;
} }
private void checkHighlightVisible(){ private void checkHighlightVisible() {
JPanel highlightPane = this.getHighlightPane(); JPanel highlightPane = this.getHighlightPane();
if (highlightPane != null) { if (highlightPane != null) {
LegendType legendType = legendTypeButton.getSelectedItem();
highlightPane.setVisible(legendType != LegendType.GRADUAL); highlightPane.setVisible(legendType != LegendType.GRADUAL);
} }
} }
@Override @Override
public void updateBean(VanChartLegend legend) { public void updateBean(VanChartLegend legend) {
if(legend == null) { if (legend == null) {
legend = new VanChartRangeLegend(); legend = new VanChartRangeLegend();
} }
super.updateBean(legend); super.updateBean(legend);
VanChartRangeLegend scatterLegend = (VanChartRangeLegend)legend; VanChartRangeLegend scatterLegend = (VanChartRangeLegend) legend;
//范围图例部分 //范围图例部分
LegendType legendType = legendTypeButton.getSelectedItem();
scatterLegend.setLegendType(legendType);
if (legendType == LegendType.GRADUAL) { if (legendType == LegendType.GRADUAL) {
gradualLegendPane.update(scatterLegend.getGradualLegend()); gradualLabelFormPane.update(scatterLegend.getGradualLegend().getLegendLabelFormat());
}else if (legendType == LegendType.SECTION) { } else if (legendType == LegendType.SECTION) {
sectionLegendPane.update(scatterLegend.getSectionLegend()); sectionLabelFormPane.update(scatterLegend.getSectionLegend().getLegendLabelFormat());
} }
this.checkHighlightVisible();
} }
@Override @Override
public void populateBean(VanChartLegend legend) { public void populateBean(VanChartLegend legend) {
VanChartRangeLegend scatterLegend = (VanChartRangeLegend)legend; VanChartRangeLegend scatterLegend = (VanChartRangeLegend) legend;
legendType = scatterLegend.getLegendType();
if (scatterLegend != null) { if (scatterLegend != null) {
//范围图例部分 //范围图例部分
legendTypeButton.setSelectedItem(scatterLegend.getLegendType()); gradualLabelFormPane.populate(scatterLegend.getGradualLegend().getLegendLabelFormat());
gradualLegendPane.populate(scatterLegend.getGradualLegend()); sectionLabelFormPane.populate(scatterLegend.getSectionLegend().getLegendLabelFormat());
sectionLegendPane.populate(scatterLegend.getSectionLegend());
super.populateBean(scatterLegend); super.populateBean(scatterLegend);
} }
checkAllUse(); checkAllUse();

173
designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartColorValueSeriesPane.java

@ -0,0 +1,173 @@
package com.fr.van.chart.designer.style.series;
import com.fr.chart.chartattr.Plot;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.widget.FRWidgetFactory;
import com.fr.plugin.chart.range.VanChartRangeLegend;
import com.fr.plugin.chart.type.LegendType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartBeautyPane;
import com.fr.van.chart.designer.component.VanChartValueColorPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-08-03
*/
public abstract class VanChartColorValueSeriesPane extends VanChartAbstractPlotSeriesPane {
//颜色划分切换
private UIButtonGroup<String> colorDivideButton;
private VanChartValueColorPane vanChartValueColorPane;
private JPanel colorDividePane;
public VanChartColorValueSeriesPane(ChartStylePane parent, Plot plot) {
super(parent, plot);
}
public VanChartValueColorPane getVanChartValueColorPane() {
return vanChartValueColorPane;
}
public void setVanChartValueColorPane(VanChartValueColorPane vanChartValueColorPane) {
this.vanChartValueColorPane = vanChartValueColorPane;
}
//获取颜色面板
protected JPanel getColorPane() {
JPanel panel = new JPanel(new BorderLayout());
JPanel colorChoosePane = createColorChoosePane();
if (colorChoosePane != null) {
panel.add(colorChoosePane, BorderLayout.CENTER);
}
stylePane = createStylePane();
setColorPaneContent(panel);
JPanel colorPane = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Color"), panel);
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 0));
return panel.getComponentCount() == 0 ? null : colorPane;
}
protected JPanel createColorChoosePane() {
vanChartFillStylePane = getVanChartFillStylePane();
if (vanChartFillStylePane != null) {
JPanel divideButtonPane = initDivideButtonPane();
vanChartValueColorPane = new VanChartValueColorPane((VanChartStylePane) parentPane);
colorDividePane = new JPanel(new CardLayout()) {
@Override
public Dimension getPreferredSize() {
if (colorDivideButton.getSelectedIndex() == 0) {
return vanChartFillStylePane.getPreferredSize();
} else {
return vanChartValueColorPane.getPreferredSize();
}
}
};
colorDividePane.add(vanChartFillStylePane, "series");
colorDividePane.add(vanChartValueColorPane, "value");
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] col = {f};
double[] row = {p, p, p};
Component[][] components = new Component[][]{
new Component[]{divideButtonPane},
new Component[]{colorDividePane}
};
return TableLayoutHelper.createCommonTableLayoutPane(components, row, col, 0);
}
return null;
}
private JPanel initDivideButtonPane() {
colorDivideButton = new UIButtonGroup<>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Series"),
Toolkit.i18nText("Fine-Design_Chart_Use_Value")
}, new String[]{"series", "value"});
colorDivideButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
checkCardPane();
}
});
colorDivideButton.setSelectedIndex(0);
UILabel label = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Chart_Color_Divide"));
Component[][] labelComponent = new Component[][]{
new Component[]{label, colorDivideButton},
};
JPanel gapTableLayoutPane = TableLayout4VanChartHelper.createGapTableLayoutPane(labelComponent);
gapTableLayoutPane.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
return gapTableLayoutPane;
}
private void checkCardPane() {
CardLayout cardLayout = (CardLayout) colorDividePane.getLayout();
cardLayout.show(colorDividePane, colorDivideButton.getSelectedItem());
colorDividePane.validate();
colorDividePane.repaint();
}
//风格
protected VanChartBeautyPane createStylePane() {
return null;
}
/**
* 保存 系列界面的属性到Plot
*/
public void updateBean(Plot plot) {
if (plot == null) {
return;
}
super.updateBean(plot);
if (colorDivideButton != null) {
VanChartRangeLegend legend = (VanChartRangeLegend) plot.getLegend();
int selectedIndex = colorDivideButton.getSelectedIndex();
if (selectedIndex == 0) {
legend.setLegendType(LegendType.ORDINARY);
} else {
vanChartValueColorPane.updateBean(legend);
}
}
}
/**
* 更新Plot的属性到系列界面
*/
public void populateBean(Plot plot) {
if (plot == null) {
return;
}
super.populateBean(plot);
if (colorDivideButton != null) {
VanChartRangeLegend legend = (VanChartRangeLegend) plot.getLegend();
LegendType legendType = legend.getLegendType();
if (legendType == LegendType.ORDINARY) {
colorDivideButton.setSelectedIndex(0);
} else {
colorDivideButton.setSelectedIndex(1);
}
vanChartValueColorPane.populateBean(legend);
checkCardPane();
}
}
}

48
designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/style/VanChartHeatMapSeriesPane.java

@ -6,12 +6,16 @@ import com.fr.design.gui.frpane.UINumberDragPane;
import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartStylePane; import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.plugin.chart.heatmap.VanChartHeatMapPlot; import com.fr.plugin.chart.heatmap.VanChartHeatMapPlot;
import com.fr.plugin.chart.range.VanChartRangeLegend;
import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartFillStylePane; import com.fr.van.chart.designer.component.VanChartFillStylePane;
import com.fr.van.chart.designer.component.VanChartHeatValueColorPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.map.VanChartMapSeriesPane; import com.fr.van.chart.map.VanChartMapSeriesPane;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -45,7 +49,7 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
} }
//设置色彩面板内容 //设置色彩面板内容
protected void setColorPaneContent (JPanel panel) { protected void setColorPaneContent(JPanel panel) {
panel.add(createNullValueColorPane(), BorderLayout.NORTH); panel.add(createNullValueColorPane(), BorderLayout.NORTH);
panel.add(createAlphaPane(), BorderLayout.CENTER); panel.add(createAlphaPane(), BorderLayout.CENTER);
} }
@ -66,14 +70,14 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
detailPane.add(heatPointPane, "heatPointPane"); detailPane.add(heatPointPane, "heatPointPane");
detailPane.add(backgroundAreaPane, "backgroundAreaPane"); detailPane.add(backgroundAreaPane, "backgroundAreaPane");
JPanel contentPane = new JPanel(new BorderLayout(0,6)); JPanel contentPane = new JPanel(new BorderLayout(0, 6));
contentPane.add(group, BorderLayout.NORTH); contentPane.add(group, BorderLayout.NORTH);
contentPane.add(detailPane, BorderLayout.CENTER); contentPane.add(detailPane, BorderLayout.CENTER);
group.addChangeListener(new ChangeListener() { group.addChangeListener(new ChangeListener() {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
if(group.getSelectedIndex() == 0){ if (group.getSelectedIndex() == 0) {
layout.show(detailPane, "heatPointPane"); layout.show(detailPane, "heatPointPane");
} else { } else {
layout.show(detailPane, "backgroundAreaPane"); layout.show(detailPane, "backgroundAreaPane");
@ -84,13 +88,14 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
return contentPane; return contentPane;
} }
private JPanel createHeatPointPane(){ private JPanel createHeatPointPane() {
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
double[] row = {p, p, p, p, p}; double[] row = {p, p, p, p, p};
double[] col = {f}; double[] col = {f};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{createHeatColorPane()},
new Component[]{createHeatPointStylePane()}, new Component[]{createHeatPointStylePane()},
new Component[]{createOpacityPane()} new Component[]{createOpacityPane()}
}; };
@ -98,9 +103,24 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
return TableLayoutHelper.createTableLayoutPane(components, row, col); return TableLayoutHelper.createTableLayoutPane(components, row, col);
} }
private JPanel createHeatPointStylePane(){ private JPanel createHeatColorPane() {
radius = new UISpinner(0,Double.MAX_VALUE,1,30); setVanChartValueColorPane(new VanChartHeatValueColorPane((VanChartStylePane) parentPane));
blur = new UISpinner(0,100,1,30); double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] row = {p};
double[] col = {f};
Component[][] components = new Component[][]{
new Component[]{getVanChartFillStylePane()},
};
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, col);
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Color"), panel);
}
private JPanel createHeatPointStylePane() {
radius = new UISpinner(0, Double.MAX_VALUE, 1, 30);
blur = new UISpinner(0, 100, 1, 30);
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
@ -121,8 +141,8 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
} }
private JPanel createOpacityPane() { private JPanel createOpacityPane() {
maxOpacity = new UINumberDragPane(0,100); maxOpacity = new UINumberDragPane(0, 100);
minOpacity = new UINumberDragPane(0,100); minOpacity = new UINumberDragPane(0, 100);
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
@ -146,12 +166,13 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
public void populateBean(Plot plot) { public void populateBean(Plot plot) {
super.populateBean(plot); super.populateBean(plot);
if(plot instanceof VanChartHeatMapPlot){ if (plot instanceof VanChartHeatMapPlot) {
VanChartHeatMapPlot heatMapPlot = (VanChartHeatMapPlot)plot; VanChartHeatMapPlot heatMapPlot = (VanChartHeatMapPlot) plot;
radius.setValue(heatMapPlot.getRadius()); radius.setValue(heatMapPlot.getRadius());
blur.setValue(heatMapPlot.getBlur()); blur.setValue(heatMapPlot.getBlur());
maxOpacity.populateBean(heatMapPlot.getMaxOpacity()); maxOpacity.populateBean(heatMapPlot.getMaxOpacity());
minOpacity.populateBean(heatMapPlot.getMinOpacity()); minOpacity.populateBean(heatMapPlot.getMinOpacity());
getVanChartValueColorPane().populateBean((VanChartRangeLegend) plot.getLegend());
} }
} }
@ -163,12 +184,13 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
public void updateBean(Plot plot) { public void updateBean(Plot plot) {
super.updateBean(plot); super.updateBean(plot);
if(plot instanceof VanChartHeatMapPlot){ if (plot instanceof VanChartHeatMapPlot) {
VanChartHeatMapPlot heatMapPlot = (VanChartHeatMapPlot)plot; VanChartHeatMapPlot heatMapPlot = (VanChartHeatMapPlot) plot;
heatMapPlot.setRadius(radius.getValue()); heatMapPlot.setRadius(radius.getValue());
heatMapPlot.setBlur(blur.getValue()); heatMapPlot.setBlur(blur.getValue());
heatMapPlot.setMaxOpacity(maxOpacity.updateBean()); heatMapPlot.setMaxOpacity(maxOpacity.updateBean());
heatMapPlot.setMinOpacity(minOpacity.updateBean()); heatMapPlot.setMinOpacity(minOpacity.updateBean());
getVanChartValueColorPane().updateBean((VanChartRangeLegend) plot.getLegend());
} }
} }

19
designer-chart/src/main/java/com/fr/van/chart/map/VanChartMapSeriesPane.java

@ -31,7 +31,7 @@ import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.border.VanChartBorderWithAlphaPane; import com.fr.van.chart.designer.component.border.VanChartBorderWithAlphaPane;
import com.fr.van.chart.designer.component.marker.VanChartImageMarkerPane; import com.fr.van.chart.designer.component.marker.VanChartImageMarkerPane;
import com.fr.van.chart.designer.other.VanChartInteractivePane; import com.fr.van.chart.designer.other.VanChartInteractivePane;
import com.fr.van.chart.designer.style.series.VanChartAbstractPlotSeriesPane; import com.fr.van.chart.designer.style.series.VanChartColorValueSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartEffectPane; import com.fr.van.chart.designer.style.series.VanChartEffectPane;
import com.fr.van.chart.map.designer.style.series.VanChartMapScatterMarkerPane; import com.fr.van.chart.map.designer.style.series.VanChartMapScatterMarkerPane;
import com.fr.van.chart.map.line.VanChartCurvePane; import com.fr.van.chart.map.line.VanChartCurvePane;
@ -52,7 +52,7 @@ import java.awt.event.ItemListener;
* Created by Mitisky on 16/5/4. * Created by Mitisky on 16/5/4.
* 地图-系列界面 * 地图-系列界面
*/ */
public class VanChartMapSeriesPane extends VanChartAbstractPlotSeriesPane { public class VanChartMapSeriesPane extends VanChartColorValueSeriesPane {
private static final String AREA_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Region"); private static final String AREA_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Region");
private static final String POINT_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Point"); private static final String POINT_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Point");
private static final String LINE_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Flow"); private static final String LINE_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Flow");
@ -163,9 +163,10 @@ public class VanChartMapSeriesPane extends VanChartAbstractPlotSeriesPane {
protected JPanel getContentPane(boolean custom) { protected JPanel getContentPane(boolean custom) {
JPanel panel = new JPanel(new BorderLayout()); JPanel panel = new JPanel(new BorderLayout());
mapType = ((VanChartMapPlot) plot).getAllLayersMapType(); mapType = ((VanChartMapPlot) plot).getAllLayersMapType();
if(mapType == MapType.CUSTOM || mapType == MapType.DRILL_CUSTOM) { if (mapType == MapType.CUSTOM || mapType == MapType.DRILL_CUSTOM) {
vanChartFillStylePane = getVanChartFillStylePane(); JPanel pane = createColorChoosePane();
panel.add(vanChartFillStylePane, BorderLayout.NORTH); pane.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
panel.add(pane, BorderLayout.NORTH);
} }
panel.add(getContentInPlotType(), BorderLayout.CENTER); panel.add(getContentInPlotType(), BorderLayout.CENTER);
return panel; return panel;
@ -176,10 +177,10 @@ public class VanChartMapSeriesPane extends VanChartAbstractPlotSeriesPane {
JPanel panel = new JPanel(new BorderLayout()); JPanel panel = new JPanel(new BorderLayout());
stylePane = createStylePane(); stylePane = createStylePane();
mapType = ((VanChartMapPlot) plot).getAllLayersMapType(); mapType = ((VanChartMapPlot) plot).getAllLayersMapType();
if(mapType != MapType.CUSTOM && mapType != MapType.DRILL_CUSTOM) { if (mapType != MapType.CUSTOM && mapType != MapType.DRILL_CUSTOM) {
vanChartFillStylePane = getVanChartFillStylePane(); JPanel pane = createColorChoosePane();
if (vanChartFillStylePane != null) { if (pane != null) {
panel.add(vanChartFillStylePane, BorderLayout.NORTH); panel.add(pane, BorderLayout.NORTH);
} }
} }
setColorPaneContent(panel, paneType); setColorPaneContent(panel, paneType);

31
designer-chart/src/main/java/com/fr/van/chart/range/component/GradualLegendPane.java

@ -2,68 +2,51 @@ package com.fr.van.chart.range.component;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.plugin.chart.range.GradualLegend; import com.fr.plugin.chart.range.GradualLegend;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
public class GradualLegendPane extends JPanel{ public class GradualLegendPane extends JPanel {
private static final long serialVersionUID = 1614283200308877353L; private static final long serialVersionUID = 1614283200308877353L;
private GradualIntervalConfigPane intervalConfigPane; private GradualIntervalConfigPane intervalConfigPane;
private LegendLabelFormatPane labelFormPane;
public GradualLegendPane(){ public GradualLegendPane() {
initComponents(); initComponents();
} }
public void setParentPane(VanChartStylePane parent) {
labelFormPane.setParentPane(parent);
}
private void initComponents() { private void initComponents() {
intervalConfigPane = createGradualIntervalConfigPane(); intervalConfigPane = createGradualIntervalConfigPane();
JPanel intervalConfigPaneWithTitle = TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Section_Config"),intervalConfigPane);
labelFormPane = new LegendLabelFormatPane();
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
double[] col = {f}; double[] col = {f};
double[] row = {p, p, p, p}; double[] row = {p};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{null}, new Component[]{intervalConfigPane},
new Component[]{intervalConfigPaneWithTitle},
new Component[]{labelFormPane},
}; };
JPanel panel = TableLayoutHelper.createTableLayoutPane(components, row, col); JPanel panel = TableLayoutHelper.createTableLayoutPane(components, row, col);
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.add(panel,BorderLayout.CENTER); this.add(panel, BorderLayout.CENTER);
} }
protected GradualIntervalConfigPane createGradualIntervalConfigPane() { protected GradualIntervalConfigPane createGradualIntervalConfigPane() {
return new GradualIntervalConfigPane(); return new GradualIntervalConfigPane();
} }
public void populate(GradualLegend gradualLegend){ public void populate(GradualLegend gradualLegend) {
if (intervalConfigPane != null) { if (intervalConfigPane != null) {
intervalConfigPane.populate(gradualLegend.getGradualIntervalConfig()); intervalConfigPane.populate(gradualLegend.getGradualIntervalConfig());
} }
if (labelFormPane != null) {
labelFormPane.populate(gradualLegend.getLegendLabelFormat());
}
} }
public void update(GradualLegend gradualLegend){ public void update(GradualLegend gradualLegend) {
if (intervalConfigPane != null) { if (intervalConfigPane != null) {
intervalConfigPane.update(gradualLegend.getGradualIntervalConfig()); intervalConfigPane.update(gradualLegend.getGradualIntervalConfig());
} }
if (labelFormPane != null) {
labelFormPane.update(gradualLegend.getLegendLabelFormat());
}
} }
} }

48
designer-chart/src/main/java/com/fr/van/chart/range/component/LegendLabelFormatPane.java

@ -21,7 +21,7 @@ import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
public class LegendLabelFormatPane extends JPanel{ public class LegendLabelFormatPane extends JPanel {
private static final long serialVersionUID = 1614283200308877354L; private static final long serialVersionUID = 1614283200308877354L;
private UIButtonGroup labelFormatStyle; private UIButtonGroup labelFormatStyle;
@ -33,25 +33,33 @@ public class LegendLabelFormatPane extends JPanel{
htmlLabelPane.setParent(parent); htmlLabelPane.setParent(parent);
} }
public LegendLabelFormatPane(){ public LegendLabelFormatPane() {
labelFormatStyle = new UIButtonGroup<Integer>(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Common"), labelFormatStyle = new UIButtonGroup<Integer>(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Common"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom")}); com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom")});
labelFormat = new FormatPaneWithOutFont(); labelFormat = new FormatPaneWithOutFont() {
@Override
protected Component[][] getComponent(JPanel fontPane, JPanel centerPane, JPanel typePane) {
typePane.setBorder(BorderFactory.createEmptyBorder());
return new Component[][]{
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Base_Format"), SwingConstants.LEFT), typePane},
new Component[]{null, centerPane},
};
}
};
htmlLabelPane = new VanChartHtmlLabelPaneWithOutWidthAndHeight(); htmlLabelPane = new VanChartHtmlLabelPaneWithOutWidthAndHeight();
htmlLabelPane.setBorder(BorderFactory.createEmptyBorder(0, (int)TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH + TableLayout4VanChartHelper.COMPONENT_INTERVAL,0,0)); htmlLabelPane.setBorder(BorderFactory.createEmptyBorder(0, (int) TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH + TableLayout4VanChartHelper.COMPONENT_INTERVAL, 0, 0));
centerPane = new JPanel(new CardLayout()) {
centerPane = new JPanel(new CardLayout()){
@Override @Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
if(labelFormatStyle.getSelectedIndex() == 0){ if (labelFormatStyle.getSelectedIndex() == 0) {
return labelFormat.getPreferredSize(); return labelFormat.getPreferredSize();
}else{ } else {
return htmlLabelPane.getPreferredSize(); return htmlLabelPane.getPreferredSize();
} }
} }
}; };
centerPane.add(labelFormat,com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Common")); centerPane.add(labelFormat, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Common"));
centerPane.add(htmlLabelPane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom")); centerPane.add(htmlLabelPane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom"));
@ -61,11 +69,11 @@ public class LegendLabelFormatPane extends JPanel{
double[] columnSize = {f, e}; double[] columnSize = {f, e};
double[] rowSize = {p, p, p}; double[] rowSize = {p, p, p};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{null,null}, new Component[]{null, null},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Label_Format"), SwingConstants.LEFT), labelFormatStyle}, new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Label_Format"), SwingConstants.LEFT), labelFormatStyle},
new Component[]{centerPane,null}, new Component[]{centerPane, null},
}; };
JPanel contentPane = TableLayout4VanChartHelper.createGapTableLayoutPane(components,rowSize,columnSize); JPanel contentPane = TableLayout4VanChartHelper.createGapTableLayoutPane(components, rowSize, columnSize);
labelFormatStyle.addActionListener(new ActionListener() { labelFormatStyle.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
@ -74,19 +82,19 @@ public class LegendLabelFormatPane extends JPanel{
}); });
labelFormatStyle.setSelectedIndex(0); labelFormatStyle.setSelectedIndex(0);
JPanel panel = TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Use_Format"), contentPane); JPanel panel = TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Use_Format"), contentPane);
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.add(panel,BorderLayout.CENTER); this.add(panel, BorderLayout.CENTER);
} }
private void checkCardPane(boolean populate) { private void checkCardPane(boolean populate) {
if(centerPane != null && labelFormatStyle != null){ if (centerPane != null && labelFormatStyle != null) {
CardLayout cardLayout = (CardLayout) centerPane.getLayout(); CardLayout cardLayout = (CardLayout) centerPane.getLayout();
if (labelFormatStyle.getSelectedIndex() == 1) { if (labelFormatStyle.getSelectedIndex() == 1) {
if(!populate) { if (!populate) {
checkCustomLabelText(); checkCustomLabelText();
} }
cardLayout.show(centerPane,com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom")); cardLayout.show(centerPane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom"));
} else { } else {
cardLayout.show(centerPane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Common")); cardLayout.show(centerPane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Common"));
} }
@ -101,21 +109,21 @@ public class LegendLabelFormatPane extends JPanel{
} }
/*标签部分的更新和存储数据部分要重写*/ /*标签部分的更新和存储数据部分要重写*/
public void populate(LegendLabelFormat legendLabelFormat){ public void populate(LegendLabelFormat legendLabelFormat) {
if (labelFormatStyle != null) { if (labelFormatStyle != null) {
labelFormatStyle.setSelectedIndex(legendLabelFormat.isCommonValueFormat() ? 0 : 1); labelFormatStyle.setSelectedIndex(legendLabelFormat.isCommonValueFormat() ? 0 : 1);
} }
if (labelFormat != null) { if (labelFormat != null) {
labelFormat.populateBean(legendLabelFormat.getFormat()); labelFormat.populateBean(legendLabelFormat.getFormat());
} }
if (htmlLabelPane != null){ if (htmlLabelPane != null) {
htmlLabelPane.populate(legendLabelFormat.getHtmlLabel()); htmlLabelPane.populate(legendLabelFormat.getHtmlLabel());
} }
checkCardPane(true); checkCardPane(true);
} }
public void update(LegendLabelFormat legendLabelFormat){ public void update(LegendLabelFormat legendLabelFormat) {
if (labelFormatStyle != null) { if (labelFormatStyle != null) {
legendLabelFormat.setCommonValueFormat(labelFormatStyle.getSelectedIndex() == 0); legendLabelFormat.setCommonValueFormat(labelFormatStyle.getSelectedIndex() == 0);
} }

11
designer-chart/src/main/java/com/fr/van/chart/range/component/SectionIntervalConfigPaneWithOutNum.java

@ -5,9 +5,7 @@ import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
import com.fr.design.gui.ilable.BoldFontTextLabel; import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula; import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import java.awt.Component; import java.awt.Component;
@ -38,15 +36,6 @@ public class SectionIntervalConfigPaneWithOutNum extends MapColorPickerPaneWithF
}); });
} }
@Override
protected JPanel getUpControlPane(Component[][] components) {
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH;
double[] columnSize = {d, e};
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, getRowSIze(), columnSize);
return panel;
}
private void setRegionVisible(boolean visible) { private void setRegionVisible(boolean visible) {
getRegionNumPane().setVisible(visible); getRegionNumPane().setVisible(visible);
numLabel.setVisible(visible); numLabel.setVisible(visible);

51
designer-chart/src/main/java/com/fr/van/chart/range/component/SectionLegendPane.java

@ -5,18 +5,15 @@ import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula; import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula;
import com.fr.plugin.chart.range.SectionLegend; import com.fr.plugin.chart.range.SectionLegend;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
public class SectionLegendPane extends JPanel{ public class SectionLegendPane extends JPanel {
private static final long serialVersionUID = 1614283200308877353L; private static final long serialVersionUID = 1614283200308877353L;
private MapColorPickerPaneWithFormula intervalConfigPane; private MapColorPickerPaneWithFormula intervalConfigPane;
private LegendLabelFormatPane labelFormPane;
private AbstractAttrNoScrollPane parent; private AbstractAttrNoScrollPane parent;
public SectionLegendPane(AbstractAttrNoScrollPane parent) { public SectionLegendPane(AbstractAttrNoScrollPane parent) {
@ -24,28 +21,15 @@ public class SectionLegendPane extends JPanel{
initComponents(); initComponents();
} }
public void setParentPane(VanChartStylePane parent){
labelFormPane.setParentPane(parent);
}
private void initComponents() { private void initComponents() {
intervalConfigPane = createSectionIntervalConfigPane(this.parent); intervalConfigPane = createSectionIntervalConfigPane(this.parent);
JPanel intervalConfigPaneWithTitle = TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Section_Config"), intervalConfigPane);
labelFormPane = new LegendLabelFormatPane(){
@Override
protected void checkCustomLabelText() {
setCustomFormatterText(SectionLegend.DEFAULT_LABEL_FUNCTION);
}
};
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
double[] col = {f}; double[] col = {f};
double[] row = {p, p, p}; double[] row = {p};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{null}, new Component[]{intervalConfigPane},
new Component[]{intervalConfigPaneWithTitle},
new Component[]{labelFormPane},
}; };
JPanel panel = TableLayoutHelper.createTableLayoutPane(components, row, col); JPanel panel = TableLayoutHelper.createTableLayoutPane(components, row, col);
@ -55,24 +39,35 @@ public class SectionLegendPane extends JPanel{
} }
protected MapColorPickerPaneWithFormula createSectionIntervalConfigPane(AbstractAttrNoScrollPane parent) { protected MapColorPickerPaneWithFormula createSectionIntervalConfigPane(AbstractAttrNoScrollPane parent) {
return new SectionIntervalConfigPane(parent); return new SectionIntervalConfigPane(parent) {
private static final int WIDTH = 225;
@Override
protected int getBoundX() {
return 0;
}
@Override
protected int getBoundY() {
return 0;
}
@Override
protected int getBoundWidth() {
return WIDTH;
}
};
} }
public void populate(SectionLegend sectionLegend){ public void populate(SectionLegend sectionLegend) {
if (intervalConfigPane != null) { if (intervalConfigPane != null) {
intervalConfigPane.populateBean(sectionLegend.getMapHotAreaColor()); intervalConfigPane.populateBean(sectionLegend.getMapHotAreaColor());
} }
if (labelFormPane != null) {
labelFormPane.populate(sectionLegend.getLegendLabelFormat());
}
} }
public void update(SectionLegend sectionLegend){ public void update(SectionLegend sectionLegend) {
if (intervalConfigPane != null) { if (intervalConfigPane != null) {
intervalConfigPane.updateBean(sectionLegend.getMapHotAreaColor()); intervalConfigPane.updateBean(sectionLegend.getMapHotAreaColor());
} }
if (labelFormPane != null) {
labelFormPane.update(sectionLegend.getLegendLabelFormat());
}
} }
} }

4
designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterSeriesPane.java

@ -13,7 +13,7 @@ import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartLineTypePane; import com.fr.van.chart.designer.component.VanChartLineTypePane;
import com.fr.van.chart.designer.component.VanChartMarkerPane; import com.fr.van.chart.designer.component.VanChartMarkerPane;
import com.fr.van.chart.designer.component.marker.VanChartCommonMarkerPane; import com.fr.van.chart.designer.component.marker.VanChartCommonMarkerPane;
import com.fr.van.chart.designer.style.series.VanChartAbstractPlotSeriesPane; import com.fr.van.chart.designer.style.series.VanChartColorValueSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartStackedAndAxisListControlPane; import com.fr.van.chart.designer.style.series.VanChartStackedAndAxisListControlPane;
import com.fr.van.chart.scatter.component.VanChartScatterLineTypePane; import com.fr.van.chart.scatter.component.VanChartScatterLineTypePane;
@ -24,7 +24,7 @@ import java.awt.Component;
/** /**
* 散点图的系列界面 * 散点图的系列界面
*/ */
public class VanChartScatterSeriesPane extends VanChartAbstractPlotSeriesPane { public class VanChartScatterSeriesPane extends VanChartColorValueSeriesPane {
private static final long serialVersionUID = 5595016643808487932L; private static final long serialVersionUID = 5595016643808487932L;
public VanChartScatterSeriesPane(ChartStylePane parent, Plot plot) { public VanChartScatterSeriesPane(ChartStylePane parent, Plot plot) {

10
designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudSeriesPane.java

@ -18,8 +18,7 @@ import com.fr.general.IOUtils;
import com.fr.plugin.chart.wordcloud.CloudShapeType; import com.fr.plugin.chart.wordcloud.CloudShapeType;
import com.fr.plugin.chart.wordcloud.VanChartWordCloudPlot; import com.fr.plugin.chart.wordcloud.VanChartWordCloudPlot;
import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartBeautyPane; import com.fr.van.chart.designer.style.series.VanChartColorValueSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartAbstractPlotSeriesPane;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.BorderLayout; import java.awt.BorderLayout;
@ -34,7 +33,7 @@ import java.awt.event.ItemListener;
/** /**
* Created by Mitisky on 16/11/29. * Created by Mitisky on 16/11/29.
*/ */
public class VanChartWordCloudSeriesPane extends VanChartAbstractPlotSeriesPane { public class VanChartWordCloudSeriesPane extends VanChartColorValueSeriesPane {
private static final String AUTO_FONT_SIZE = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Auto"); private static final String AUTO_FONT_SIZE = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Auto");
private static final String CUSTOM_FONT_SIZE = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Define_Size"); private static final String CUSTOM_FONT_SIZE = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Define_Size");
private static final double MAX_ROTATION = 90; private static final double MAX_ROTATION = 90;
@ -228,9 +227,4 @@ public class VanChartWordCloudSeriesPane extends VanChartAbstractPlotSeriesPane
} }
} }
} }
@Override
protected VanChartBeautyPane createStylePane() {
return null;
}
} }

BIN
designer-chart/src/main/resources/com/fr/van/chart/box.images/box.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 918 B

After

Width:  |  Height:  |  Size: 1.6 KiB

5
designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java

@ -310,14 +310,15 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter {
public void fix(XCreator creator ,int x, int y) { public void fix(XCreator creator ,int x, int y) {
int height = creator.getHeight(); int height = creator.getHeight();
int width = creator.getWidth(); int width = creator.getWidth();
//坐标小于0时让它还在容器内
if (x < 0) { if (x < 0) {
x = container.getX(); x = 0;
} else if (x + creator.getWidth() > container.getWidth()) { } else if (x + creator.getWidth() > container.getWidth()) {
x = container.getWidth() - width; x = container.getWidth() - width;
} }
if (y < 0) { if (y < 0) {
y = container.getY(); y = 0;
} else if (y + creator.getHeight() > container.getHeight()) { } else if (y + creator.getHeight() > container.getHeight()) {
y = container.getHeight() - height; y = container.getHeight() - height;
} }

15
designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java

@ -114,6 +114,15 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
XCreator creator = (XCreator) container.getComponent(i); XCreator creator = (XCreator) container.getComponent(i);
creator.updateChildBound(minHeight); creator.updateChildBound(minHeight);
creator.setBackupBound(creator.getBounds()); creator.setBackupBound(creator.getBounds());
//tab布局用到
ArrayList<?> childrenList = creator.getTargetChildrenList();
for (int j = 0; j < childrenList.size(); j++) {
XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList.get(j);
for (int m = 0; m < tabLayout.getComponentCount(); m++) {
XCreator childCreator = tabLayout.getXCreator(m);
childCreator.setBackupBound(childCreator.getBounds());
}
}
} }
} }
@ -1039,15 +1048,15 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList.get(j); XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList.get(j);
tabLayout.setBackupBound(tabLayout.getBounds()); tabLayout.setBackupBound(tabLayout.getBounds());
int refSize = isHor ? tabLayout.getWidth() : tabLayout.getHeight(); int refSize = isHor ? tabLayout.getWidth() : tabLayout.getHeight();
double percent = (double) offset / refSize; double percent = offset / (double) (refSize - offset);
if (percent < 0 && !tabLayout.canReduce(percent)) { if (percent < 0 && !tabLayout.canReduce(percent)) {
return; return;
} }
setAdjustedSize(tabLayout, offset, isHor);
for (int m = 0; m < tabLayout.getComponentCount(); m++) { for (int m = 0; m < tabLayout.getComponentCount(); m++) {
XCreator childCreator = tabLayout.getXCreator(m); XCreator childCreator = tabLayout.getXCreator(m);
WAbsoluteLayout.BoundsWidget wgt = (WAbsoluteLayout.BoundsWidget) tabLayout.toData().getBoundsWidget(childCreator.toData()); WAbsoluteLayout.BoundsWidget wgt = (WAbsoluteLayout.BoundsWidget) tabLayout.toData().getBoundsWidget(childCreator.toData());
wgt.setBounds(tabLayout.getComponent(m).getBounds()); wgt.setBounds(childCreator.getBackupBound());
wgt.setBackupBounds(childCreator.getBackupBound());
} }
adjustCreatorsSize(percent, tabLayout, isHor); adjustCreatorsSize(percent, tabLayout, isHor);
} }

8
designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java

@ -18,6 +18,7 @@ import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget;
import com.fr.form.ui.container.WBodyLayoutType; import com.fr.form.ui.container.WBodyLayoutType;
import com.fr.form.ui.container.WFitLayout; import com.fr.form.ui.container.WFitLayout;
import com.fr.form.ui.container.WLayout; import com.fr.form.ui.container.WLayout;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger; import com.fr.general.FRLogger;
import com.fr.general.FRScreen; import com.fr.general.FRScreen;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
@ -1091,7 +1092,12 @@ public class XWFitLayout extends XLayoutContainer {
public Component getBottomComp(int x, int y, int h) { public Component getBottomComp(int x, int y, int h) {
int val = getAcualInterval(); int val = getAcualInterval();
return this.getComponentAt(x, y+h+default_Length+val); Component comp = this.getComponentAt(x, y+h+default_Length+val);
if (ComparatorUtils.equals(this, comp)) {
// 如果获取组件等于自身 说明存在偏移 加上一个默认偏移量
return this.getComponentAt(x + default_Length, y+h+default_Length+val);
}
return comp;
} }
public Component getRightTopComp(int x, int y, int w) { public Component getRightTopComp(int x, int y, int w) {

17
designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java

@ -74,7 +74,7 @@ import java.util.List;
public class FormParaDesigner extends FormDesigner implements ParameterDesignerProvider { public class FormParaDesigner extends FormDesigner implements ParameterDesignerProvider {
private static final int NUM_IN_A_LINE = 4; private static final int NUM_IN_A_LINE = 4;
private static final int H_COMPONENT_GAP = 165; private static final int H_COMPONENT_GAP = 165;
private static final int V_COMPONENT_GAP = 25; public static final int V_COMPONENT_GAP = 25;
private static final int FIRST_V_LOCATION = 35; private static final int FIRST_V_LOCATION = 35;
private static final int FIRST_H_LOCATION = 90; private static final int FIRST_H_LOCATION = 90;
private static final int SECOND_H_LOCATION = 170; private static final int SECOND_H_LOCATION = 170;
@ -640,6 +640,18 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP
* @return 是否加入 s * @return 是否加入 s
*/ */
public void addingAllParameter2Editor(Parameter[] parameterArray, int currentIndex) { public void addingAllParameter2Editor(Parameter[] parameterArray, int currentIndex) {
addingAllParameter2EditorWithReturnValue(parameterArray, currentIndex);
}
/**
* @param parameterArray 参数数组
* @param currentIndex 添加所有参数前的index值
* @Description: 添加所有的参数并返回当前的currentIndex此方法为addingAllParameter2Editor的兼容方法
* @return: 添加所有参数后的index值
* @Author: Henry.Wang
* @date: 2020/8/5 19:40
*/
public int addingAllParameter2EditorWithReturnValue(Parameter[] parameterArray, int currentIndex) {
for (int i = 0; i < parameterArray.length; i++) { for (int i = 0; i < parameterArray.length; i++) {
com.fr.form.ui.Label label = new com.fr.form.ui.Label(); com.fr.form.ui.Label label = new com.fr.form.ui.Label();
label.setWidgetName("Label" + parameterArray[i].getName()); label.setWidgetName("Label" + parameterArray[i].getName());
@ -667,9 +679,10 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP
XCreator xCreator = XCreatorUtils.createXCreator(formSubmitButton); XCreator xCreator = XCreatorUtils.createXCreator(formSubmitButton);
if (!(this.autoAddComponent(xCreator, H_COMPONENT_GAP * 3 + H_GAP, FIRST_V_LOCATION if (!(this.autoAddComponent(xCreator, H_COMPONENT_GAP * 3 + H_GAP, FIRST_V_LOCATION
+ V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE)))) { + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE)))) {
return; currentIndex = ((int) Math.ceil((currentIndex + 1) / (double) NUM_IN_A_LINE)) * NUM_IN_A_LINE;
} }
} }
return currentIndex;
} }
/** /**

1
designer-form/src/main/java/com/fr/design/mainframe/JForm.java

@ -371,6 +371,7 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm<F
return; return;
} }
ParameterPropertyPane.getInstance().setAddParaPaneVisible(isAddParaPaneVisible(comp), this); ParameterPropertyPane.getInstance().setAddParaPaneVisible(isAddParaPaneVisible(comp), this);
ParameterPropertyPane.getInstance().updateAddParaPaneSize();
editingComponent = comp.createToolPane(this, formDesign); editingComponent = comp.createToolPane(this, formDesign);
if (DesignerMode.isAuthorityEditing()) { if (DesignerMode.isAuthorityEditing()) {
EastRegionContainerPane.getInstance().replaceWidgetSettingsPane( EastRegionContainerPane.getInstance().replaceWidgetSettingsPane(

2
designer-form/src/main/java/com/fr/design/parameter/ParameterPropertyPane.java

@ -103,7 +103,7 @@ public class ParameterPropertyPane extends JPanel{
refreshState(DesignerContext.getDesignerFrame().getSelectedJTemplate()); refreshState(DesignerContext.getDesignerFrame().getSelectedJTemplate());
} }
private void updateAddParaPaneSize() { public void updateAddParaPaneSize() {
if (!addParaPane.isVisible()) { if (!addParaPane.isVisible()) {
return; return;
} }

46
designer-form/src/test/java/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapterTest.java

@ -0,0 +1,46 @@
package com.fr.design.designer.beans.adapters.layout;
import com.fr.config.dao.DaoContext;
import com.fr.config.dao.impl.LocalClassHelperDao;
import com.fr.config.dao.impl.LocalEntityDao;
import com.fr.config.dao.impl.LocalXmlEntityDao;
import com.fr.design.designer.creator.XButton;
import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XWAbsoluteLayout;
import com.fr.form.ui.Button;
import com.fr.form.ui.container.WAbsoluteLayout;
import java.awt.Dimension;
import junit.framework.TestCase;
import org.junit.Assert;
public class FRAbsoluteLayoutAdapterTest extends TestCase {
@Override
protected void setUp() throws Exception {
DaoContext.setEntityDao(new LocalEntityDao());
DaoContext.setClassHelperDao(new LocalClassHelperDao());
DaoContext.setXmlEntityDao(new LocalXmlEntityDao());
}
public void testFix(){
WAbsoluteLayout layout =new WAbsoluteLayout();
XWAbsoluteLayout container =new XWAbsoluteLayout(layout);
container.setBounds(0,320,400,160);
FRAbsoluteLayoutAdapter frAbsoluteLayoutAdapter = new FRAbsoluteLayoutAdapter(container);
XCreator button = new XButton(new Button(),new Dimension(88,40));
frAbsoluteLayoutAdapter.fix(button,-1,-1);
Assert.assertEquals(0,button.getX());
Assert.assertEquals(0,button.getY());
frAbsoluteLayoutAdapter.fix(button,350,200);
Assert.assertEquals(312,button.getX());
Assert.assertEquals(120,button.getY());
}
@Override
protected void tearDown() throws Exception {
DaoContext.setEntityDao(null);
DaoContext.setClassHelperDao(null);
DaoContext.setXmlEntityDao(null);
}
}

87
designer-realize/src/main/java/com/fr/design/dscolumn/DSColumnAdvancedPane.java

@ -7,6 +7,7 @@ import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.formula.CustomVariableResolver; import com.fr.design.formula.CustomVariableResolver;
import com.fr.design.formula.FormulaFactory; import com.fr.design.formula.FormulaFactory;
import com.fr.design.formula.FormulaTextField;
import com.fr.design.formula.SortFormulaPane; import com.fr.design.formula.SortFormulaPane;
import com.fr.design.formula.UIFormula; import com.fr.design.formula.UIFormula;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
@ -25,8 +26,17 @@ import com.fr.report.cell.cellattr.CellExpandAttr;
import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.cell.cellattr.core.group.DSColumn;
import com.fr.report.cell.cellattr.core.group.SelectCount; import com.fr.report.cell.cellattr.core.group.SelectCount;
import javax.swing.*; import javax.swing.BorderFactory;
import java.awt.*; import javax.swing.Box;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -221,7 +231,7 @@ public class DSColumnAdvancedPane extends BasicPane {
return; return;
} }
Object value = cellElement.getValue(); Object value = cellElement.getValue();
if (value == null || !(value instanceof DSColumn)) { if (!(value instanceof DSColumn)) {
return; return;
} }
@ -238,7 +248,7 @@ public class DSColumnAdvancedPane extends BasicPane {
this.cellElement = cellElement; this.cellElement = cellElement;
Object value = cellElement.getValue(); Object value = cellElement.getValue();
if (value == null || !(value instanceof DSColumn)) { if (!(value instanceof DSColumn)) {
return; return;
} }
DSColumn dSColumn = (DSColumn) value; DSColumn dSColumn = (DSColumn) value;
@ -246,8 +256,8 @@ public class DSColumnAdvancedPane extends BasicPane {
int sort = dSColumn.getOrder(); int sort = dSColumn.getOrder();
this.sortOrderComboBox.setSortOrder(new SortOrder(sort)); this.sortOrderComboBox.setSortOrder(new SortOrder(sort));
String sortFormula = dSColumn.getSortFormula(); BaseFormula sortFormulaObject = dSColumn.getSortFormulaObject();
sortFormulaTextField.setText(sortFormula); sortFormulaTextField.setValue(sortFormulaObject);
} }
public void update(CellElement cellElement) { public void update(CellElement cellElement) {
@ -263,15 +273,7 @@ public class DSColumnAdvancedPane extends BasicPane {
dSColumn.setOrder(this.sortOrderComboBox.getSortOrder().getOrder()); dSColumn.setOrder(this.sortOrderComboBox.getSortOrder().getOrder());
//lance:sort formula //lance:sort formula
String sText = null; dSColumn.setSortFormulaObject(sortFormulaTextField.getValue());
if (!(sortFormulaTextField.getText() == null || sortFormulaTextField.getText().trim().equals("") || sortFormulaTextField.getText().trim().equals("$$$"))) {
sText = new String(sortFormulaTextField.getText());
}
if (!(sText == null || sText.length() < 1)) {
dSColumn.setSortFormula(sText);
} else {
dSColumn.setSortFormula(null);
}
} }
} }
@ -367,9 +369,9 @@ public class DSColumnAdvancedPane extends BasicPane {
int selectCountType = selectCount.getType(); int selectCountType = selectCount.getType();
this.selectCountComboBox.setSelectedIndex(selectCountType); this.selectCountComboBox.setSelectedIndex(selectCountType);
if (selectCountType == TOP.getValue()) { if (selectCountType == TOP.getValue()) {
this.topFormulaPane.populate(selectCount.getFormulaCount()); this.topFormulaPane.populateFormula(selectCount.getFormulaObject());
} else if (selectCountType == BOTTOM.getValue()) { } else if (selectCountType == BOTTOM.getValue()) {
this.bottomFormulaPane.populate(selectCount.getFormulaCount()); this.bottomFormulaPane.populateFormula(selectCount.getFormulaObject());
} else if (selectCountType == SPECIFY.getValue()) { } else if (selectCountType == SPECIFY.getValue()) {
this.serialTextField.setText(selectCount.getSerial()); this.serialTextField.setText(selectCount.getSerial());
} }
@ -395,9 +397,9 @@ public class DSColumnAdvancedPane extends BasicPane {
dSColumn.setSelectCount(selectCount); dSColumn.setSelectCount(selectCount);
selectCount.setType(selectCountSelectIndex); selectCount.setType(selectCountSelectIndex);
if (selectCountSelectIndex == TOP.getValue()) { if (selectCountSelectIndex == TOP.getValue()) {
selectCount.setFormulaCount(this.topFormulaPane.getFormulaText()); selectCount.setFormulaObject(this.topFormulaPane.getFormula());
} else if (selectCountSelectIndex == BOTTOM.getValue()) { } else if (selectCountSelectIndex == BOTTOM.getValue()) {
selectCount.setFormulaCount(this.bottomFormulaPane.getFormulaText()); selectCount.setFormulaObject(this.bottomFormulaPane.getFormula());
} else if (selectCountSelectIndex == SPECIFY.getValue()) { } else if (selectCountSelectIndex == SPECIFY.getValue()) {
selectCount.setSerial(this.serialTextField.getText()); selectCount.setSerial(this.serialTextField.getText());
} }
@ -407,19 +409,19 @@ public class DSColumnAdvancedPane extends BasicPane {
private static class JFormulaField extends JPanel { private static class JFormulaField extends JPanel {
private CellElement cellElement; private CellElement cellElement;
private UITextField formulaTextField; private FormulaTextField formulaTextField;
private String defaultValue; private BaseFormula defaultFormula;
public JFormulaField(String defaultValue) { public JFormulaField(String defaultValue) {
this.defaultValue = defaultValue; this.defaultFormula = BaseFormula.createFormulaBuilder().build(defaultValue);
this.setLayout(FRGUIPaneFactory.createBoxFlowLayout()); this.setLayout(FRGUIPaneFactory.createBoxFlowLayout());
UILabel bottomLabel = new UILabel("="); UILabel bottomLabel = new UILabel("=");
bottomLabel.setFont(new Font("Dialog", Font.BOLD, 12)); bottomLabel.setFont(new Font("Dialog", Font.BOLD, 12));
this.add(bottomLabel); this.add(bottomLabel);
formulaTextField = new UITextField(24); formulaTextField = new FormulaTextField(24);
this.add(formulaTextField); this.add(formulaTextField);
formulaTextField.setText(defaultValue); formulaTextField.setValue(defaultFormula);
UIButton bottomFrmulaButton = new UIButton("..."); UIButton bottomFrmulaButton = new UIButton("...");
this.add(bottomFrmulaButton); this.add(bottomFrmulaButton);
@ -439,16 +441,25 @@ public class DSColumnAdvancedPane extends BasicPane {
public String getFormulaText() { public String getFormulaText() {
return this.formulaTextField.getText(); return this.formulaTextField.getText();
} }
public void populateFormula(BaseFormula baseFormula) {
this.formulaTextField.setValue(baseFormula);
this.formulaTextField.setText(baseFormula.getPureContent());
}
public BaseFormula getFormula() {
return this.formulaTextField.getValue();
}
private ActionListener formulaButtonActionListener = new ActionListener() { private ActionListener formulaButtonActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
BaseFormula valueFormula = BaseFormula.createFormulaBuilder().build();
String text = formulaTextField.getText(); BaseFormula valueFormula = formulaTextField.getValue();
if (text == null || text.length() <= 0) { if (valueFormula == null) {
valueFormula.setContent(defaultValue); valueFormula = BaseFormula.createFormulaBuilder().build();
} else {
valueFormula.setContent(text);
} }
final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula(); final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula();
@ -457,7 +468,7 @@ public class DSColumnAdvancedPane extends BasicPane {
return; return;
} }
Object value = cellElement.getValue(); Object value = cellElement.getValue();
if (value == null || !(value instanceof DSColumn)) { if (!(value instanceof DSColumn)) {
return; return;
} }
DSColumn dsColumn = (DSColumn) value; DSColumn dsColumn = (DSColumn) value;
@ -470,9 +481,9 @@ public class DSColumnAdvancedPane extends BasicPane {
public void doOk() { public void doOk() {
BaseFormula valueFormula = formulaPane.update(); BaseFormula valueFormula = formulaPane.update();
if (valueFormula.getContent().length() <= 1) { if (valueFormula.getContent().length() <= 1) {
formulaTextField.setText(defaultValue); formulaTextField.setValue(defaultFormula);
} else { } else {
formulaTextField.setText(valueFormula.getContent().substring(1)); formulaTextField.setValue(valueFormula);
} }
} }
}).setVisible(true); }).setVisible(true);
@ -503,12 +514,12 @@ public class DSColumnAdvancedPane extends BasicPane {
DSColumn dSColumn = (DSColumn) value; DSColumn dSColumn = (DSColumn) value;
//formula //formula
String valueFormula = dSColumn.getResult(); BaseFormula valueFormula = dSColumn.getResultObject();
if (valueFormula == null) { if (valueFormula == null) {
valueFormula = "$$$"; valueFormula = BaseFormula.createFormulaBuilder().build("$$$");
} }
formulaField.populateElement(cellElement); formulaField.populateElement(cellElement);
formulaField.populate(valueFormula); formulaField.populateFormula(valueFormula);
} }
public void update(CellElement cellElement) { public void update(CellElement cellElement) {
@ -516,13 +527,13 @@ public class DSColumnAdvancedPane extends BasicPane {
return; return;
} }
Object value = cellElement.getValue(); Object value = cellElement.getValue();
if (value == null || !(value instanceof DSColumn)) { if (!(value instanceof DSColumn)) {
return; return;
} }
DSColumn dSColumn = (DSColumn) (cellElement.getValue()); DSColumn dSColumn = (DSColumn) (cellElement.getValue());
//formula //formula
dSColumn.setResult(this.formulaField.getFormulaText()); dSColumn.setResultObject(this.formulaField.getFormula());
} }
} }

26
designer-realize/src/main/java/com/fr/design/parameter/ParameterDefinitePane.java

@ -17,6 +17,7 @@ import com.fr.design.designer.TargetComponent;
import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedEvent;
import com.fr.design.event.TargetModifiedListener; import com.fr.design.event.TargetModifiedListener;
import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.form.parameter.FormParaDesigner;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
@ -30,6 +31,10 @@ import com.fr.design.menu.ShortCut;
import com.fr.design.menu.ToolBarDef; import com.fr.design.menu.ToolBarDef;
import com.fr.design.module.DesignModuleFactory; import com.fr.design.module.DesignModuleFactory;
import com.fr.design.style.background.BackgroundPane; import com.fr.design.style.background.BackgroundPane;
import com.fr.form.main.parameter.FormParameterUI;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WAbsoluteLayout;
import com.fr.form.ui.container.WLayout;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.main.parameter.ReportParameterAttr; import com.fr.main.parameter.ReportParameterAttr;
import com.fr.main.parameter.TemplateParameterAttr; import com.fr.main.parameter.TemplateParameterAttr;
@ -46,6 +51,7 @@ import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Container; import java.awt.Container;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
@ -249,6 +255,22 @@ public class ParameterDefinitePane extends JPanel implements ToolBarMenuDockPlus
FineLoggerFactory.getLogger().error(e.getMessage(), e); FineLoggerFactory.getLogger().error(e.getMessage(), e);
} }
} }
currentIndex = reportParameterAttr.getCurrentIndex();
//因为以前的版本没有保存currentIndex,所以要计算currentIndex的值
if (parameterUI != null && parameterUI instanceof FormParameterUI && currentIndex == 0) {
WLayout wLayout = ((FormParameterUI) parameterUI).getContainer();
int widgetCount = wLayout.getWidgetCount();
Rectangle endRec = null;
for (int i = 0; i < widgetCount; i++) {
Widget widget = wLayout.getWidget(i);
Rectangle tempRec = ((WAbsoluteLayout.BoundsWidget) widget).getBounds();
if (endRec == null || tempRec.y > endRec.y) {
endRec = tempRec;
}
}
if (endRec != null)
currentIndex = (int) (Math.ceil(endRec.y / FormParaDesigner.V_COMPONENT_GAP)) * NUM_IN_A_LINE;
}
paraDesignEditor.populate(parameterUI); paraDesignEditor.populate(parameterUI);
@ -268,8 +290,6 @@ public class ParameterDefinitePane extends JPanel implements ToolBarMenuDockPlus
bridge.setBackground(reportParameterAttr.getBackground()); bridge.setBackground(reportParameterAttr.getBackground());
bridge.setUseParamsTemplate(reportParameterAttr.isUseParamsTemplate()); bridge.setUseParamsTemplate(reportParameterAttr.isUseParamsTemplate());
} }
currentIndex = reportParameterAttr.getCurrentIndex();
} }
@ -438,7 +458,7 @@ public class ParameterDefinitePane extends JPanel implements ToolBarMenuDockPlus
return; return;
} }
paraDesignEditor.addingAllParameter2Editor(parameterArray, currentIndex); currentIndex = paraDesignEditor.addingAllParameter2EditorWithReturnValue(parameterArray, currentIndex);
parameterArray = null; parameterArray = null;
refreshParameter(); refreshParameter();

2
designer-realize/src/main/java/com/fr/grid/GridUI.java

@ -481,7 +481,7 @@ public class GridUI extends ComponentUI {
// peter:tmpRectangle2D_3只是一个临时的Rectangle2D,由于后面不少地方需要用到这个矩形 // peter:tmpRectangle2D_3只是一个临时的Rectangle2D,由于后面不少地方需要用到这个矩形
this.cell_back_rect.setRect(0, 0, this.tmpRectangle.getWidth() - 1, this.cell_back_rect.setRect(0, 0, this.tmpRectangle.getWidth() - 1,
this.tmpRectangle.getHeight() - 1); this.tmpRectangle.getHeight() - 1.5);
// peter:对于合并的单元格,需要先白色的背景来清除背景. // peter:对于合并的单元格,需要先白色的背景来清除背景.
if (tmpCellElement.getColumnSpan() > 1 || tmpCellElement.getRowSpan() > 1) { if (tmpCellElement.getColumnSpan() > 1 || tmpCellElement.getRowSpan() > 1) {
// REPORT-23492 要看下是否设置了纸张背景 如果设置了按照背景来画 // REPORT-23492 要看下是否设置了纸张背景 如果设置了按照背景来画

72
designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java

@ -12,6 +12,7 @@ import com.fr.design.dscolumn.SelectedDataColumnPane;
import com.fr.design.event.UIObserverListener; import com.fr.design.event.UIObserverListener;
import com.fr.design.formula.CustomVariableResolver; import com.fr.design.formula.CustomVariableResolver;
import com.fr.design.formula.FormulaFactory; import com.fr.design.formula.FormulaFactory;
import com.fr.design.formula.FormulaTextField;
import com.fr.design.formula.UIFormula; import com.fr.design.formula.UIFormula;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ibutton.UIButtonGroup;
@ -645,6 +646,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
*/ */
public class ResultSetSortConfigPane extends JPanel { public class ResultSetSortConfigPane extends JPanel {
private static final String DEFAULT_VALUE = "="; private static final String DEFAULT_VALUE = "=";
private final BaseFormula DEFAULT_FORMULA = BaseFormula.createFormulaBuilder().build();
private JPanel contentPane; private JPanel contentPane;
private UIButtonGroup sortTypePane; private UIButtonGroup sortTypePane;
private JFormulaField formulaField; private JFormulaField formulaField;
@ -719,11 +721,11 @@ public class CellDSColumnEditor extends CellQuickEditor {
centerPane.setPreferredSize(new Dimension(156, 20)); centerPane.setPreferredSize(new Dimension(156, 20));
TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP);
} }
String sortFormula = dSColumn.getSortFormula(); BaseFormula baseFormula = dSColumn.getSortFormulaObject();
if (sortFormula != null && sortFormula.length() >= 1) { if (baseFormula == null) {
this.formulaField.populate(sortFormula); this.formulaField.populateFormula(DEFAULT_FORMULA);
} else { } else {
this.formulaField.populate(DEFAULT_VALUE); this.formulaField.populateFormula(baseFormula);
} }
} }
} }
@ -740,7 +742,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
if (value instanceof DSColumn) { if (value instanceof DSColumn) {
DSColumn dSColumn = (DSColumn) value; DSColumn dSColumn = (DSColumn) value;
dSColumn.setOrder(this.sortTypePane.getSelectedIndex()); dSColumn.setOrder(this.sortTypePane.getSelectedIndex());
dSColumn.setSortFormula(this.formulaField.getFormulaText()); dSColumn.setSortFormulaObject(this.formulaField.getFormula());
} }
} }
} }
@ -774,6 +776,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
*/ */
public class ResultSetFilterConfigPane extends JPanel { public class ResultSetFilterConfigPane extends JPanel {
private static final String DEFAULT_VALUE = "="; private static final String DEFAULT_VALUE = "=";
private final BaseFormula DEFAULT_FORMULA = BaseFormula.createFormulaBuilder().build(DEFAULT_VALUE);
private JPanel contentPane; private JPanel contentPane;
private UIComboBox rsComboBox; private UIComboBox rsComboBox;
@ -918,8 +921,8 @@ public class CellDSColumnEditor extends CellQuickEditor {
CardLayout setCardPaneLayout = (CardLayout) setCardPane.getLayout(); CardLayout setCardPaneLayout = (CardLayout) setCardPane.getLayout();
CardLayout tipCardPaneLayout = (CardLayout) tipCardPane.getLayout(); CardLayout tipCardPaneLayout = (CardLayout) tipCardPane.getLayout();
// 重置默认值 // 重置默认值
this.topFormulaPane.populate(DEFAULT_VALUE); this.topFormulaPane.populateFormula(DEFAULT_FORMULA);
this.bottomFormulaPane.populate(DEFAULT_VALUE); this.bottomFormulaPane.populateFormula(DEFAULT_FORMULA);
this.serialTextField.setText(StringUtils.EMPTY); this.serialTextField.setText(StringUtils.EMPTY);
if (selectCount != null) { if (selectCount != null) {
@ -927,7 +930,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
this.rsComboBox.setSelectedIndex(selectCountType); this.rsComboBox.setSelectedIndex(selectCountType);
switch (FilterTypeEnum.getFilterByValue(selectCountType)) { switch (FilterTypeEnum.getFilterByValue(selectCountType)) {
case TOP: case TOP:
this.topFormulaPane.populate(selectCount.getFormulaCount()); this.topFormulaPane.populateFormula(selectCount.getFormulaObject());
//前N个 //前N个
setCardPaneLayout.show(setCardPane, TOP.name()); setCardPaneLayout.show(setCardPane, TOP.name());
tipCardPaneLayout.show(tipCardPane, TOP.name()); tipCardPaneLayout.show(tipCardPane, TOP.name());
@ -938,7 +941,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0);
break; break;
case BOTTOM: case BOTTOM:
this.bottomFormulaPane.populate(selectCount.getFormulaCount()); this.bottomFormulaPane.populateFormula(selectCount.getFormulaObject());
//后N个 //后N个
setCardPaneLayout.show(setCardPane, BOTTOM.name()); setCardPaneLayout.show(setCardPane, BOTTOM.name());
tipCardPaneLayout.show(tipCardPane, BOTTOM.name()); tipCardPaneLayout.show(tipCardPane, BOTTOM.name());
@ -1019,9 +1022,9 @@ public class CellDSColumnEditor extends CellQuickEditor {
dSColumn.setSelectCount(selectCount); dSColumn.setSelectCount(selectCount);
//noinspection Duplicates //noinspection Duplicates
if (selectedFilterIndex == TOP.getValue()) { if (selectedFilterIndex == TOP.getValue()) {
selectCount.setFormulaCount(this.topFormulaPane.getFormulaText()); selectCount.setFormulaObject(this.topFormulaPane.getFormula());
} else if (selectedFilterIndex == BOTTOM.getValue()) { } else if (selectedFilterIndex == BOTTOM.getValue()) {
selectCount.setFormulaCount(this.bottomFormulaPane.getFormulaText()); selectCount.setFormulaObject(this.bottomFormulaPane.getFormula());
} else if (selectedFilterIndex == SPECIFY.getValue()) { } else if (selectedFilterIndex == SPECIFY.getValue()) {
selectCount.setSerial(this.serialTextField.getText()); selectCount.setSerial(this.serialTextField.getText());
} }
@ -1060,14 +1063,15 @@ public class CellDSColumnEditor extends CellQuickEditor {
*/ */
public class JFormulaField extends JPanel { public class JFormulaField extends JPanel {
private CellElement cellElement; private CellElement cellElement;
private UITextField formulaTextField; private FormulaTextField formulaTextField;
private String defaultValue; private BaseFormula defaultFormula;
public JFormulaField(String defaultValue) { public JFormulaField(String defaultValue) {
this.defaultValue = defaultValue; this.defaultFormula = BaseFormula.createFormulaBuilder().build(defaultValue);
formulaTextField = new UITextField(); formulaTextField = new FormulaTextField();
formulaTextField.setText(defaultValue); formulaTextField.setValue(defaultFormula);
JPanel textFieldPane = new JPanel(new BorderLayout()); JPanel textFieldPane = new JPanel(new BorderLayout());
textFieldPane.add(formulaTextField, BorderLayout.CENTER); textFieldPane.add(formulaTextField, BorderLayout.CENTER);
textFieldPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5)); textFieldPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
@ -1094,6 +1098,16 @@ public class CellDSColumnEditor extends CellQuickEditor {
public String getFormulaText() { public String getFormulaText() {
return this.formulaTextField.getText().trim(); return this.formulaTextField.getText().trim();
} }
public void populateFormula(BaseFormula baseFormula) {
this.formulaTextField.setValue(baseFormula);
}
public BaseFormula getFormula() {
return this.formulaTextField.getValue();
}
/** /**
* 添加事件监听器 * 添加事件监听器
@ -1114,16 +1128,14 @@ public class CellDSColumnEditor extends CellQuickEditor {
private ActionListener formulaButtonActionListener = new ActionListener() { private ActionListener formulaButtonActionListener = new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
BaseFormula valueFormula = BaseFormula.createFormulaBuilder().build();
String text = formulaTextField.getText(); BaseFormula valueFormula = formulaTextField.getValue();
if (text == null || text.length() <= 0) { if (valueFormula == null) {
valueFormula.setContent(defaultValue); valueFormula = BaseFormula.createFormulaBuilder().build();
} else {
valueFormula.setContent(text);
} }
final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula(); final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula();
if (cellElement != null) { if (cellElement != null) {
Object value = cellElement.getValue(); final Object value = cellElement.getValue();
if (value instanceof DSColumn) { if (value instanceof DSColumn) {
DSColumn dsColumn = (DSColumn) value; DSColumn dsColumn = (DSColumn) value;
String[] displayNames = DesignTableDataManager.getSelectedColumnNames(DesignTableDataManager.getEditingTableDataSource(), dsColumn.getDSName()); String[] displayNames = DesignTableDataManager.getSelectedColumnNames(DesignTableDataManager.getEditingTableDataSource(), dsColumn.getDSName());
@ -1133,9 +1145,9 @@ public class CellDSColumnEditor extends CellQuickEditor {
public void doOk() { public void doOk() {
BaseFormula valueFormula = formulaPane.update(); BaseFormula valueFormula = formulaPane.update();
if (valueFormula.getContent().length() <= 1) { if (valueFormula.getContent().length() <= 1) {
formulaTextField.setText(defaultValue); formulaTextField.setValue(defaultFormula);
} else { } else {
formulaTextField.setText(valueFormula.getContent()); formulaTextField.setValue(valueFormula);
} }
} }
}).setVisible(true); }).setVisible(true);
@ -1152,6 +1164,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
*/ */
public class CustomValuePane extends JPanel { public class CustomValuePane extends JPanel {
private static final String DEFAULT_VALUE = "=$$$"; private static final String DEFAULT_VALUE = "=$$$";
private final BaseFormula DEFAULT_FORMULA = BaseFormula.createFormulaBuilder().build(DEFAULT_VALUE);
private JFormulaField formulaField; private JFormulaField formulaField;
@ -1171,11 +1184,11 @@ public class CellDSColumnEditor extends CellQuickEditor {
if (value instanceof DSColumn) { if (value instanceof DSColumn) {
DSColumn dSColumn = (DSColumn) value; DSColumn dSColumn = (DSColumn) value;
//formula //formula
String valueFormula = dSColumn.getResult(); BaseFormula valueFormula = dSColumn.getResultObject();
if (valueFormula != null) { if (valueFormula != null) {
formulaField.populate(valueFormula); formulaField.populateFormula(valueFormula);
} else { } else {
formulaField.populate(DEFAULT_VALUE); formulaField.populateFormula(DEFAULT_FORMULA);
} }
formulaField.populateElement(cellElement); formulaField.populateElement(cellElement);
@ -1188,8 +1201,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
Object value = cellElement.getValue(); Object value = cellElement.getValue();
if (value instanceof DSColumn) { if (value instanceof DSColumn) {
DSColumn dSColumn = (DSColumn) (cellElement.getValue()); DSColumn dSColumn = (DSColumn) (cellElement.getValue());
dSColumn.setResult(StringUtils.isEmpty(this.formulaField.getFormulaText()) ? dSColumn.setResultObject(this.formulaField.getFormula());
null : this.formulaField.getFormulaText());
} }
} }
} }

4
pom.xml

@ -28,8 +28,8 @@
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version> <version>3.1</version>
<configuration> <configuration>
<source>1.7</source> <source>1.8</source>
<target>1.7</target> <target>1.8</target>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>

Loading…
Cancel
Save