Browse Source

REPORT-3348 数据列高级设置内部组件调整

master
yaoh.wu 7 years ago
parent
commit
1a3b6fca8f
  1. 213
      designer/src/com/fr/design/dscolumn/DSColumnAdvancedEditorPane.java
  2. 1
      designer/src/com/fr/design/dscolumn/DSColumnBasicEditorPane.java
  3. 48
      designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java
  4. 23
      designer/src/com/fr/quickeditor/CellQuickEditor.java
  5. 2
      designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java
  6. 62
      designer_base/src/com/fr/design/layout/FRGUIPaneFactory.java
  7. 3
      designer_base/src/com/fr/design/utils/DesignUtils.java

213
designer/src/com/fr/design/dscolumn/DSColumnAdvancedEditorPane.java

@ -19,7 +19,6 @@ import com.fr.design.layout.FRGUIPaneFactory;
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.cell.CellEditorPane; import com.fr.design.mainframe.cell.CellEditorPane;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.IOUtils; import com.fr.general.IOUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.report.cell.CellElement; import com.fr.report.cell.CellElement;
@ -52,9 +51,9 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
//排列顺序 //排列顺序
private ResultSetSortConfigPane sortPane; private ResultSetSortConfigPane sortPane;
//结果集筛选 //结果集筛选
private SelectCountPane selectCountPane; private ResultSetFilterConfigPane filterPane;
//自定义值显示 //自定义值显示
private ValuePane valuePane; private CustomValuePane valuePane;
//横向可扩展性 //横向可扩展性
private UICheckBox horizontalExtendableCheckBox; private UICheckBox horizontalExtendableCheckBox;
//纵向可扩展性 //纵向可扩展性
@ -68,6 +67,7 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
public DSColumnAdvancedEditorPane() { public DSColumnAdvancedEditorPane() {
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.add(this.createContentPane(), BorderLayout.CENTER); this.add(this.createContentPane(), BorderLayout.CENTER);
this.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15));
} }
@ -99,22 +99,22 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
private JPanel createContentPane() { private JPanel createContentPane() {
this.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); this.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
//结果集排序
this.sortPane = new ResultSetSortConfigPane(); this.sortPane = new ResultSetSortConfigPane();
//结果筛选
selectCountPane = new DSColumnAdvancedEditorPane.SelectCountPane(); filterPane = new ResultSetFilterConfigPane();
//自定义值显示
valuePane = new DSColumnAdvancedEditorPane.ValuePane(); valuePane = new CustomValuePane();
//可扩展性
JPanel extendableDirectionPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); JPanel extendableDirectionPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
extendableDirectionPane.add(horizontalExtendableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Horizontal_Extendable"))); extendableDirectionPane.add(horizontalExtendableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Horizontal_Extendable")));
extendableDirectionPane.add(verticalExtendableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Vertical_Extendable"))); extendableDirectionPane.add(verticalExtendableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Vertical_Extendable")));
JPanel extendablePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("ExpandD-Expandable"));
extendablePane.setLayout(new BorderLayout());
extendablePane.add(extendableDirectionPane, BorderLayout.CENTER);
JPanel multiNumPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Fill_blank_Data")); //补充空白数据
JPanel multiNumPane = new JPanel();
useMultiplyNumCheckBox = new UICheckBox(Inter.getLocText("Column_Multiple")); useMultiplyNumCheckBox = new UICheckBox(Inter.getLocText("Column_Multiple"));
multiNumPane.add(useMultiplyNumCheckBox); multiNumPane.add(useMultiplyNumCheckBox);
@ -124,22 +124,20 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
multiNumPane.add(multiNumSpinner); multiNumPane.add(multiNumSpinner);
useMultiplyNumCheckBox.addActionListener(new ActionListener() { useMultiplyNumCheckBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
checkButtonEnabled(); checkButtonEnabled();
} }
}); });
double[] rowSize = {TableLayout.PREFERRED, TableLayout.PREFERRED, double p = TableLayout.PREFERRED, f = TableLayout.FILL;
TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED}; double[] rowSize = {p, p, p, p, p, p};
double[] columnSize = {TableLayout.FILL}; double[] columnSize = {f};
Component[][] components = null; Component[][] components = new Component[][]{
components = new Component[][]{
{sortPane}, {sortPane},
{selectCountPane}, {filterPane},
{valuePane}, {valuePane},
{extendablePane}, {extendableDirectionPane},
{multiNumPane} {multiNumPane}
}; };
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
@ -167,7 +165,7 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
public ResultSetSortConfigPane() { public ResultSetSortConfigPane() {
this.setLayout(new BorderLayout(0, 4)); this.setLayout(new BorderLayout(0, 0));
Icon[] iconArray = { Icon[] iconArray = {
IOUtils.readIcon("/com/fr/design/images/expand/none16x16.png"), IOUtils.readIcon("/com/fr/design/images/expand/none16x16.png"),
IOUtils.readIcon("/com/fr/design/images/expand/asc.png"), IOUtils.readIcon("/com/fr/design/images/expand/asc.png"),
@ -177,24 +175,34 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
sort_type_pane = new UIButtonGroup(iconArray); sort_type_pane = new UIButtonGroup(iconArray);
sort_type_pane.setAllToolTips(nameArray); sort_type_pane.setAllToolTips(nameArray);
sort_type_pane.setGlobalName(Inter.getLocText("ExpandD-Sort_After_Expand")); sort_type_pane.setGlobalName(Inter.getLocText("ExpandD-Sort_After_Expand"));
this.add(sort_type_pane, BorderLayout.NORTH);
cardLayout = new CardLayout(); cardLayout = new CardLayout();
centerPane = new JPanel(cardLayout); centerPane = new JPanel(cardLayout);
tinyFormulaPane = new TinyFormulaPane(); tinyFormulaPane = new TinyFormulaPane();
centerPane.add(new JPanel(), "none"); centerPane.add(new JPanel(), "none");
centerPane.add(tinyFormulaPane, "content"); centerPane.add(tinyFormulaPane, "content");
//todo 国际化
this.add(centerPane, BorderLayout.CENTER); UILabel sortLabel = new UILabel("排列顺序");
sort_type_pane.addChangeListener(new ChangeListener() { sort_type_pane.addChangeListener(new ChangeListener() {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
cardLayout.show(centerPane, sort_type_pane.getSelectedIndex() == 0 ? "none" : "content"); boolean noContent = sort_type_pane.getSelectedIndex() == 0;
cardLayout.show(centerPane, noContent ? "none" : "content");
if (noContent) {
centerPane.setPreferredSize(new Dimension(0, 0));
} else {
centerPane.setPreferredSize(new Dimension(165, 20));
}
} }
}); });
Component[][] components = new Component[][]{
new Component[]{sortLabel, sort_type_pane},
new Component[]{null, centerPane}
};
double p = TableLayout.PREFERRED, f = TableLayout.FILL;
double[] rowSize = {p, p}, columnSize = {p, f};
this.add(TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize), BorderLayout.CENTER);
} }
@ -224,80 +232,106 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
* *
* @see DSColumnAdvancedPane.SelectCountPane * @see DSColumnAdvancedPane.SelectCountPane
*/ */
protected static class SelectCountPane extends JPanel { protected static class ResultSetFilterConfigPane extends JPanel {
private enum FilterType {
//前N个 后N个 奇数 偶数 自定义 未定义
TOP, BOTTOM, ODD, EVEN, SPECIFY, UNDEFINE;
}
CellElement cellElement; CellElement cellElement;
// private Comparator sortComparator; private UIComboBox rsComboBox;
private UIComboBox selectCountComboBox; private JPanel setCardPane;
private JPanel selectCountCardPane; private JPanel tipCardPane;
private UITextField serialTextField; private UITextField serialTextField;
DSColumnAdvancedEditorPane.JFormulaField topFormulaPane; DSColumnAdvancedEditorPane.JFormulaField topFormulaPane;
DSColumnAdvancedEditorPane.JFormulaField bottomFormulaPane; DSColumnAdvancedEditorPane.JFormulaField bottomFormulaPane;
public SelectCountPane() { public ResultSetFilterConfigPane() {
double p = TableLayout.PREFERRED, f = TableLayout.FILL;
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
UILabel filterLabel = new UILabel("结果集筛选");
selectCountComboBox = new UIComboBox(new String[]{ //结果集筛选下拉框
rsComboBox = new UIComboBox(new String[]{
Inter.getLocText("Undefined"), Inter.getLocText("Undefined"),
Inter.getLocText("BindColumn-Top_N"), Inter.getLocText("BindColumn-Top_N"),
Inter.getLocText("BindColumn-Bottom_N"), Inter.getLocText("BindColumn-Bottom_N"),
Inter.getLocText("Odd"), Inter.getLocText("Odd"),
Inter.getLocText("Even"), Inter.getLocText("Even"),
Inter.getLocText("Specify"),}); Inter.getLocText("Specify")
selectCountComboBox.addActionListener(new ActionListener() { });
rsComboBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
int selectIndex = selectCountComboBox.getSelectedIndex(); int selectIndex = rsComboBox.getSelectedIndex();
CardLayout c1 = (CardLayout) selectCountCardPane.getLayout(); CardLayout setCardPaneLayout = (CardLayout) setCardPane.getLayout();
CardLayout tipCardPaneLayout = (CardLayout) tipCardPane.getLayout();
if (selectIndex == 1) { if (selectIndex == 1) {
c1.show(selectCountCardPane, "TOP"); setCardPaneLayout.show(setCardPane, FilterType.TOP.name());
tipCardPaneLayout.show(tipCardPane, FilterType.TOP.name());
} else if (selectIndex == 2) { } else if (selectIndex == 2) {
c1.show(selectCountCardPane, "BOTTOM"); setCardPaneLayout.show(setCardPane, FilterType.BOTTOM.name());
tipCardPaneLayout.show(tipCardPane, FilterType.BOTTOM.name());
} else if (selectIndex == 3) { } else if (selectIndex == 3) {
c1.show(selectCountCardPane, "ODD"); setCardPaneLayout.show(setCardPane, FilterType.ODD.name());
tipCardPaneLayout.show(tipCardPane, FilterType.ODD.name());
} else if (selectIndex == 4) { } else if (selectIndex == 4) {
c1.show(selectCountCardPane, "EVEN"); setCardPaneLayout.show(setCardPane, FilterType.EVEN.name());
tipCardPaneLayout.show(tipCardPane, FilterType.EVEN.name());
} else if (selectIndex == 5) { } else if (selectIndex == 5) {
c1.show(selectCountCardPane, "SPECIFY"); setCardPaneLayout.show(setCardPane, FilterType.SPECIFY.name());
tipCardPaneLayout.show(tipCardPane, FilterType.SPECIFY.name());
} else { } else {
c1.show(selectCountCardPane, "UNDEFINE"); setCardPaneLayout.show(setCardPane, FilterType.UNDEFINE.name());
tipCardPaneLayout.show(tipCardPane, FilterType.UNDEFINE.name());
} }
} }
}); });
//配置展示CardLayout
selectCountCardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); setCardPane = FRGUIPaneFactory.createCardLayout_S_Pane();
this.add(GUICoreUtils.createFlowPane(new JComponent[]{new UILabel(INSET_TEXT), selectCountComboBox, //提示信息展示CardLayout
new UILabel(INSET_TEXT), selectCountCardPane}, FlowLayout.LEFT), BorderLayout.WEST); tipCardPane = FRGUIPaneFactory.createCardLayout_S_Pane();
// selectCountCardPane.setLayout(new CardLayout());
//前N个
//not define pane topFormulaPane = new DSColumnAdvancedEditorPane.JFormulaField("=");
setCardPane.add(topFormulaPane, FilterType.TOP.name());
JPanel undefinedPane = GUICoreUtils.createFlowPane(new UILabel(Inter.getLocText("Undefined")), FlowLayout.LEFT); tipCardPane.add(new JPanel(), FilterType.TOP.name());
topFormulaPane = new DSColumnAdvancedEditorPane.JFormulaField("-1");
bottomFormulaPane = new DSColumnAdvancedEditorPane.JFormulaField("-1"); //后N个
serialTextField = new UITextField(18); bottomFormulaPane = new DSColumnAdvancedEditorPane.JFormulaField("=");
JPanel oddPane = GUICoreUtils.createFlowPane(new UILabel(Inter.getLocText("BindColumn-Result_Serial_Number_Start_From_1") setCardPane.add(bottomFormulaPane, FilterType.BOTTOM.name());
+ " " + Inter.getLocText("BindColumn-Odd_Selected_(1,3,5...)")), FlowLayout.LEFT); tipCardPane.add(new JPanel(), FilterType.BOTTOM.name());
JPanel evenPane = GUICoreUtils.createFlowPane(new UILabel(Inter.getLocText("BindColumn-Result_Serial_Number_Start_From_1")
+ " " + Inter.getLocText("BindColumn-Even_Selected_(2,4,6...)")), FlowLayout.LEFT); //自定义值下方没有提示信息,也没有输入框
JPanel specifyPane = GUICoreUtils.createFlowPane(new JComponent[]{ JPanel undefinedPane = new JPanel();
serialTextField, new UILabel( setCardPane.add(new JPanel(), FilterType.UNDEFINE.name());
tipCardPane.add(new JPanel(), FilterType.UNDEFINE.name());
//奇数 UILabel 占一行作为提示信息
setCardPane.add(new JPanel(), FilterType.ODD.name());
tipCardPane.add(new UILabel(Inter.getLocText("BindColumn-Result_Serial_Number_Start_From_1")
+ "," + Inter.getLocText("BindColumn-Odd_Selected_(1,3,5...)")), FilterType.ODD.name());
//偶数 UILabel 占一行作为提示信息
setCardPane.add(new JPanel(), FilterType.EVEN.name());
tipCardPane.add(new UILabel(Inter.getLocText("BindColumn-Result_Serial_Number_Start_From_1")
+ "," + Inter.getLocText("BindColumn-Even_Selected_(2,4,6...)")), FilterType.ODD.name());
//输入框占用右半边,提示信息占一行
serialTextField = new UITextField(16);
setCardPane.add(serialTextField, FilterType.SPECIFY.name());
tipCardPane.add(new UILabel(
Inter.getLocText(new String[]{ Inter.getLocText(new String[]{
"Format", "BindColumn-Result_Serial_Number_Start_From_1", "Inner_Parameter", "Group_Count"}, "Format", "BindColumn-Result_Serial_Number_Start_From_1", "Inner_Parameter", "Group_Count"},
new String[]{": 1,2-3,5,8 ", ",", "$__count__"}) new String[]{": 1,2-3,5,8 ", ",", "$__count__"})), FilterType.SPECIFY.name());
)
}, FlowLayout.LEFT); this.add(TableLayoutHelper.createTableLayoutPane(new Component[][]{
serialTextField.setToolTipText(Inter.getLocText("StyleFormat-Sample") + ":=JOINARRAY(GREPARRAY(RANGE($__count__), item!=4), \",\")"); {filterLabel, rsComboBox},
selectCountCardPane.add(undefinedPane, "UNDEFINE"); {null, setCardPane},
selectCountCardPane.add(topFormulaPane, "TOP"); {tipCardPane, null}
selectCountCardPane.add(bottomFormulaPane, "BOTTOM"); }, new double[]{p, p, p}, new double[]{p, f}), BorderLayout.CENTER);
//odd
selectCountCardPane.add(oddPane, "ODD");
//even
selectCountCardPane.add(evenPane, "EVEN");
//specify
selectCountCardPane.add(specifyPane, "SPECIFY");
} }
public void populate(CellElement cellElement) { public void populate(CellElement cellElement) {
@ -316,7 +350,7 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
this.bottomFormulaPane.populateElement(cellElement); this.bottomFormulaPane.populateElement(cellElement);
if (selectCount != null) { if (selectCount != null) {
int selectCountType = selectCount.getType(); int selectCountType = selectCount.getType();
this.selectCountComboBox.setSelectedIndex(selectCountType); this.rsComboBox.setSelectedIndex(selectCountType);
if (selectCountType == SelectCount.TOP) { if (selectCountType == SelectCount.TOP) {
this.topFormulaPane.populate(selectCount.getFormulaCount()); this.topFormulaPane.populate(selectCount.getFormulaCount());
} else if (selectCountType == SelectCount.BOTTOM) { } else if (selectCountType == SelectCount.BOTTOM) {
@ -338,7 +372,7 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
DSColumn dSColumn = (DSColumn) (cellElement.getValue()); DSColumn dSColumn = (DSColumn) (cellElement.getValue());
//alex:SelectCount //alex:SelectCount
int selectCountSelectIndex = this.selectCountComboBox.getSelectedIndex(); int selectCountSelectIndex = this.rsComboBox.getSelectedIndex();
if (selectCountSelectIndex == 0) { if (selectCountSelectIndex == 0) {
dSColumn.setSelectCount(null); dSColumn.setSelectCount(null);
} else { } else {
@ -381,19 +415,16 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
public JFormulaField(String defaultValue) { public JFormulaField(String defaultValue) {
this.defaultValue = defaultValue; this.defaultValue = defaultValue;
this.setLayout(FRGUIPaneFactory.createBoxFlowLayout()); this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
UILabel bottomLabel = new UILabel("="); formulaTextField = new UITextField(11);
bottomLabel.setFont(new Font("Dialog", Font.BOLD, 12));
this.add(bottomLabel);
formulaTextField = new UITextField(24);
this.add(formulaTextField); this.add(formulaTextField);
formulaTextField.setText(defaultValue); formulaTextField.setText(defaultValue);
UIButton bottomFrmulaButton = new UIButton("..."); UIButton formulaButton = new UIButton(IOUtils.readIcon("/com/fr/design/images/m_insert/formula.png"));
this.add(bottomFrmulaButton); this.add(formulaButton);
bottomFrmulaButton.setToolTipText(Inter.getLocText("Formula") + "..."); formulaButton.setToolTipText(Inter.getLocText("Formula") + "...");
bottomFrmulaButton.setPreferredSize(new Dimension(25, formulaTextField.getPreferredSize().height)); formulaButton.setPreferredSize(new Dimension(20, formulaTextField.getPreferredSize().height));
bottomFrmulaButton.addActionListener(formulaButtonActionListener); formulaButton.addActionListener(formulaButtonActionListener);
} }
public void populate(String formulaContent) { public void populate(String formulaContent) {
@ -453,13 +484,12 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
* *
* @see DSColumnAdvancedPane.ValuePane * @see DSColumnAdvancedPane.ValuePane
*/ */
private static class ValuePane extends JPanel { private static class CustomValuePane extends JPanel {
private DSColumnAdvancedEditorPane.JFormulaField formulaField; private DSColumnAdvancedEditorPane.JFormulaField formulaField;
public ValuePane() { public CustomValuePane() {
this.setLayout(FRGUIPaneFactory.createBoxFlowLayout()); this.setLayout(FRGUIPaneFactory.createBoxFlowLayout());
UILabel customValueLabel = new UILabel("显示值");
this.add(new UILabel(INSET_TEXT + Inter.getLocText("Value") + ":"));
this.add(Box.createHorizontalStrut(2)); this.add(Box.createHorizontalStrut(2));
this.add((formulaField = new DSColumnAdvancedEditorPane.JFormulaField("$$$"))); this.add((formulaField = new DSColumnAdvancedEditorPane.JFormulaField("$$$")));
} }
@ -493,7 +523,6 @@ public class DSColumnAdvancedEditorPane extends CellEditorPane {
return; return;
} }
DSColumn dSColumn = (DSColumn) (cellElement.getValue()); DSColumn dSColumn = (DSColumn) (cellElement.getValue());
//formula //formula
dSColumn.setResult(this.formulaField.getFormulaText()); dSColumn.setResult(this.formulaField.getFormulaText());
} }

1
designer/src/com/fr/design/dscolumn/DSColumnBasicEditorPane.java

@ -33,6 +33,7 @@ public class DSColumnBasicEditorPane extends CellEditorPane {
this.groupPane = groupPane; this.groupPane = groupPane;
this.conditionPane = conditionPane; this.conditionPane = conditionPane;
this.add(this.createContentPane(), BorderLayout.CENTER); this.add(this.createContentPane(), BorderLayout.CENTER);
this.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15));
} }

48
designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java

@ -1,35 +1,31 @@
package com.fr.design.dscolumn; package com.fr.design.dscolumn;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import com.fr.design.gui.ilable.UILabel;
import javax.swing.JPanel;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombobox.FunctionComboBox; import com.fr.design.gui.icombobox.FunctionComboBox;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
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.general.Inter;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Inter;
import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.TemplateCellElement;
import com.fr.report.cell.cellattr.CellExpandAttr; import com.fr.report.cell.cellattr.CellExpandAttr;
import com.fr.report.cell.cellattr.core.group.CustomGrouper; import com.fr.report.cell.cellattr.core.group.*;
import com.fr.report.cell.cellattr.core.group.DSColumn;
import com.fr.report.cell.cellattr.core.group.FunctionGrouper;
import com.fr.report.cell.cellattr.core.group.RecordGrouper;
import com.fr.report.cell.cellattr.core.group.SummaryGrouper;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/** /**
* 这个pane是选中数据列后在上方QuickRegion处显示的pane * 这个pane是选中数据列后在上方QuickRegion处显示的pane
* *
* @author zhou * @author zhou, yaoh.wu
* @version 2017年8月2日14点55分
* @since 8.0
*/ */
public class ResultSetGroupDockingPane extends ResultSetGroupPane { public class ResultSetGroupDockingPane extends ResultSetGroupPane {
private static final int BIND_GROUP = 0; private static final int BIND_GROUP = 0;
@ -42,7 +38,7 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane {
private CardLayout cardLayout; private CardLayout cardLayout;
private UIComboBox goBox; private UIComboBox goBox;
ItemListener l; private ItemListener listener;
public ResultSetGroupDockingPane(ElementCasePane ePane) { public ResultSetGroupDockingPane(ElementCasePane ePane) {
super(); super();
@ -58,15 +54,13 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane {
} }
private JPanel layoutPane() { private JPanel layoutPane() {
double vs = 4;
double vg = 6;
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
Component[][] components = new Component[][] Component[][] components = new Component[][]
{ {
new Component[]{new UILabel(Inter.getLocText("Data_Setting")), goBox}, new Component[]{new UILabel(Inter.getLocText("Data_Setting")), goBox},
new Component[]{cardPane, null} new Component[]{null, cardPane}
}; };
goBox.addItemListener(new ItemListener() { goBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ee) { public void itemStateChanged(ItemEvent ee) {
@ -190,15 +184,15 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane {
} }
} }
public void addListener(ItemListener l) { public void addListener(ItemListener listener) {
goBox.addItemListener(l); goBox.addItemListener(listener);
groupComboBox.addItemListener(l); groupComboBox.addItemListener(listener);
functionComboBox.addItemListener(l); functionComboBox.addItemListener(listener);
this.l = l; this.listener = listener;
} }
void fireTargetChanged() { void fireTargetChanged() {
l.itemStateChanged(null); listener.itemStateChanged(null);
} }
@Override @Override

23
designer/src/com/fr/quickeditor/CellQuickEditor.java

@ -37,18 +37,33 @@ public abstract class CellQuickEditor extends QuickEditor<ElementCasePane> {
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
double[] columnSize = {p, f}; double[] columnSize = {p, f};
double[] rowSize = {p, p, p}; double[] rowSize = {p, p};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{new UILabel(" " + Inter.getLocText("Cell")), columnRowTextField = initColumnRowTextField()}, new Component[]{initTopContent(), null},
new Component[]{new UILabel(Inter.getLocText("HF-Insert_Content") + " "), cellElementEditButton = initCellElementEditButton()},
new Component[]{createCenterBody(), null} new Component[]{createCenterBody(), null}
}; };
JPanel panel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); JPanel panel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); this.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
this.add(panel, BorderLayout.CENTER); this.add(panel, BorderLayout.CENTER);
} }
private JPanel initTopContent() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p, f};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{
new Component[]{new UILabel(" " + Inter.getLocText("Cell")), columnRowTextField = initColumnRowTextField()},
new Component[]{new UILabel(Inter.getLocText("HF-Insert_Content") + " "), cellElementEditButton = initCellElementEditButton()},
};
JPanel topContent = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
topContent.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15));
return topContent;
}
/** /**
* 初始化添加按钮 * 初始化添加按钮
* TODO 9.0 换成下拉菜单后原来的快捷键不好处理先跳过 * TODO 9.0 换成下拉菜单后原来的快捷键不好处理先跳过

2
designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java

@ -175,7 +175,6 @@ public class CellDSColumnEditor extends CellQuickEditor {
*/ */
private void createPanes() { private void createPanes() {
paneList = new ArrayList<>(); paneList = new ArrayList<>();
/*基本设置面板*/ /*基本设置面板*/
this.dataPane = new SelectedDataColumnPane(); this.dataPane = new SelectedDataColumnPane();
this.groupPane = new ResultSetGroupDockingPane(tc); this.groupPane = new ResultSetGroupDockingPane(tc);
@ -194,7 +193,6 @@ public class CellDSColumnEditor extends CellQuickEditor {
dataPane.addListener(dataListener); dataPane.addListener(dataListener);
groupPane.addListener(groupListener); groupPane.addListener(groupListener);
paneList.add(new DSColumnBasicEditorPane(cellElement, dataPane, groupPane, conditionPane)); paneList.add(new DSColumnBasicEditorPane(cellElement, dataPane, groupPane, conditionPane));
/*高级设置面板*/ /*高级设置面板*/
paneList.add(new DSColumnAdvancedEditorPane()); paneList.add(new DSColumnAdvancedEditorPane());
} }

62
designer_base/src/com/fr/design/layout/FRGUIPaneFactory.java

@ -1,24 +1,12 @@
package com.fr.design.layout; package com.fr.design.layout;
import java.awt.BorderLayout; import com.fr.design.border.UITitledBorder;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.LayoutManager;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.Icon;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import com.fr.design.border.UITitledBorder; import javax.swing.*;
import java.awt.*;
public class FRGUIPaneFactory { public class FRGUIPaneFactory {
private FRGUIPaneFactory() {
}
public static final float WIDTH_PARA_F = 80.0f; public static final float WIDTH_PARA_F = 80.0f;
public static final int WIDTH_OFFSET_N = 60; public static final int WIDTH_OFFSET_N = 60;
public static final int WIDTH_OFFSET_M = 20; public static final int WIDTH_OFFSET_M = 20;
@ -27,8 +15,12 @@ public class FRGUIPaneFactory {
public static final int HEIGHT_PARA = 25; public static final int HEIGHT_PARA = 25;
public static final int HEIGHT_OFFSET = 50; public static final int HEIGHT_OFFSET = 50;
private FRGUIPaneFactory() {
}
/** /**
* 创建一个靠右靠左的水平间隙为2的流式布局 * 创建一个靠右靠左的水平间隙为2的流式布局
*
* @return FlowLayout对象 * @return FlowLayout对象
*/ */
public static LayoutManager createBoxFlowLayout() { // createBoxFlowLayout 图表用到的比较多 public static LayoutManager createBoxFlowLayout() { // createBoxFlowLayout 图表用到的比较多
@ -37,6 +29,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠左的布局 * 创建一个靠左的布局
*
* @return FlowLayout对象 * @return FlowLayout对象
*/ */
public static LayoutManager createLeftZeroLayout() { public static LayoutManager createLeftZeroLayout() {
@ -45,6 +38,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠左的水平和垂直间隙均为5的流式布局 * 创建一个靠左的水平和垂直间隙均为5的流式布局
*
* @return FlowLayout对象 * @return FlowLayout对象
*/ */
public static LayoutManager createLabelFlowLayout() { // createLabelFlowLayout public static LayoutManager createLabelFlowLayout() { // createLabelFlowLayout
@ -53,6 +47,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠左流式布局间距10,10 * 创建一个靠左流式布局间距10,10
*
* @return FlowLayout对象 * @return FlowLayout对象
*/ */
public static LayoutManager createL_FlowLayout() { public static LayoutManager createL_FlowLayout() {
@ -61,6 +56,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个居中流式布局 * 创建一个居中流式布局
*
* @return FlowLayout对象 * @return FlowLayout对象
*/ */
public static LayoutManager createCenterFlowLayout() { public static LayoutManager createCenterFlowLayout() {
@ -69,6 +65,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠右流式布局 * 创建一个靠右流式布局
*
* @return FlowLayout对象 * @return FlowLayout对象
*/ */
public static LayoutManager createRightFlowLayout() { public static LayoutManager createRightFlowLayout() {
@ -77,6 +74,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个边框布局 * 创建一个边框布局
*
* @return BorderLayout对象 * @return BorderLayout对象
*/ */
public static LayoutManager createBorderLayout() { public static LayoutManager createBorderLayout() {
@ -85,16 +83,17 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个边框布局间距4,4 * 创建一个边框布局间距4,4
*
* @return BorderLayout对象 * @return BorderLayout对象
*/ */
public static LayoutManager createM_BorderLayout() { public static LayoutManager createM_BorderLayout() {
return new BorderLayout(4, 4); return new BorderLayout(4, 4);
} }
// TODO 删掉
/** /**
* 创建一个1列的网格布局 * 创建一个1列的网格布局
*
* @return FRGridLayout对象 * @return FRGridLayout对象
*/ */
public static LayoutManager create1ColumnGridLayout() { public static LayoutManager create1ColumnGridLayout() {
@ -103,6 +102,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个2列的网格布局 * 创建一个2列的网格布局
*
* @return FRGridLayout对象 * @return FRGridLayout对象
*/ */
public static LayoutManager create2ColumnGridLayout() { public static LayoutManager create2ColumnGridLayout() {
@ -111,6 +111,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个n列的网格布局 * 创建一个n列的网格布局
*
* @param nColumn 列数 * @param nColumn 列数
* @return FRGridLayout对象 * @return FRGridLayout对象
*/ */
@ -120,6 +121,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个带标题边框面板 * 创建一个带标题边框面板
*
* @param string 边框标题 * @param string 边框标题
* @return JPanel对象 * @return JPanel对象
*/ */
@ -133,6 +135,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个带标题边框面板并且居中显示 * 创建一个带标题边框面板并且居中显示
*
* @param borderTitle 边框标题 * @param borderTitle 边框标题
* @return JPanel对象 * @return JPanel对象
*/ */
@ -146,6 +149,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠左空边框布局间隔大 * 创建一个靠左空边框布局间隔大
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createBigHGapFlowInnerContainer_M_Pane() { public static JPanel createBigHGapFlowInnerContainer_M_Pane() {
@ -157,6 +161,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠左空边框面板间隔中等 * 创建一个靠左空边框面板间隔中等
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createMediumHGapFlowInnerContainer_M_Pane() { public static JPanel createMediumHGapFlowInnerContainer_M_Pane() {
@ -168,6 +173,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠左空边框面板间隔中等 * 创建一个靠左空边框面板间隔中等
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createMediumHGapHighTopFlowInnerContainer_M_Pane() { public static JPanel createMediumHGapHighTopFlowInnerContainer_M_Pane() {
@ -179,6 +185,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个正常靠左空边框面板 * 创建一个正常靠左空边框面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createNormalFlowInnerContainer_M_Pane() { public static JPanel createNormalFlowInnerContainer_M_Pane() {
@ -190,6 +197,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠左0间距边框面板 * 创建一个靠左0间距边框面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createLeftFlowZeroGapBorderPane() { public static JPanel createLeftFlowZeroGapBorderPane() {
@ -201,6 +209,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠左流式布局正常流式内嵌 * 创建一个靠左流式布局正常流式内嵌
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createNormalFlowInnerContainer_S_Pane() { public static JPanel createNormalFlowInnerContainer_S_Pane() {
@ -211,6 +220,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠左流式布局流式内嵌 * 创建一个靠左流式布局流式内嵌
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createBoxFlowInnerContainer_S_Pane() { public static JPanel createBoxFlowInnerContainer_S_Pane() {
@ -221,6 +231,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个靠右面板 * 创建一个靠右面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createRightFlowInnerContainer_S_Pane() { public static JPanel createRightFlowInnerContainer_S_Pane() {
@ -231,6 +242,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个居中面板 * 创建一个居中面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createCenterFlowInnerContainer_S_Pane() { public static JPanel createCenterFlowInnerContainer_S_Pane() {
@ -241,6 +253,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建一个居中0间距面板 * 创建一个居中0间距面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createCenterFlowZeroGapBorderPane() { public static JPanel createCenterFlowZeroGapBorderPane() {
@ -252,6 +265,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建纵向排列面板 * 创建纵向排列面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createY_AXISBoxInnerContainer_L_Pane() { public static JPanel createY_AXISBoxInnerContainer_L_Pane() {
@ -263,6 +277,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建纵向边框面板 * 创建纵向边框面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createYBoxEmptyBorderPane() { public static JPanel createYBoxEmptyBorderPane() {
@ -274,6 +289,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建横向面板 * 创建横向面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createX_AXISBoxInnerContainer_L_Pane() { public static JPanel createX_AXISBoxInnerContainer_L_Pane() {
@ -285,6 +301,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建纵向面板M * 创建纵向面板M
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createY_AXISBoxInnerContainer_M_Pane() { public static JPanel createY_AXISBoxInnerContainer_M_Pane() {
@ -296,6 +313,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建横向内置boxlayout的面板 * 创建横向内置boxlayout的面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createX_AXISBoxInnerContainer_M_Pane() { public static JPanel createX_AXISBoxInnerContainer_M_Pane() {
@ -307,6 +325,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建纵向内置boxlayout的面板 * 创建纵向内置boxlayout的面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createY_AXISBoxInnerContainer_S_Pane() { public static JPanel createY_AXISBoxInnerContainer_S_Pane() {
@ -317,6 +336,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建横向内置boxlayout的面板 * 创建横向内置boxlayout的面板
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createX_AXISBoxInnerContainer_S_Pane() { public static JPanel createX_AXISBoxInnerContainer_S_Pane() {
@ -327,6 +347,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建n列网格面板 * 创建n列网格面板
*
* @param nColumn 列数 * @param nColumn 列数
* @return JPanel对象 * @return JPanel对象
*/ */
@ -338,6 +359,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建n列网格面板 * 创建n列网格面板
*
* @param nColumn 列数 * @param nColumn 列数
* @param h 水平间距 * @param h 水平间距
* @param v 垂直间距 * @param v 垂直间距
@ -351,6 +373,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建顶格n列网格面板 * 创建顶格n列网格面板
*
* @param nColumn 列数 * @param nColumn 列数
* @return JPanel对象 * @return JPanel对象
*/ */
@ -362,6 +385,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建边框面板L * 创建边框面板L
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createBorderLayout_L_Pane() { public static JPanel createBorderLayout_L_Pane() {
@ -373,6 +397,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建边框面板M * 创建边框面板M
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createBorderLayout_M_Pane() { public static JPanel createBorderLayout_M_Pane() {
@ -384,6 +409,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建边框面板S * 创建边框面板S
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createBorderLayout_S_Pane() { public static JPanel createBorderLayout_S_Pane() {
@ -394,6 +420,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建卡片式布局 * 创建卡片式布局
*
* @return JPanel对象 * @return JPanel对象
*/ */
public static JPanel createCardLayout_S_Pane() { public static JPanel createCardLayout_S_Pane() {
@ -404,6 +431,7 @@ public class FRGUIPaneFactory {
/** /**
* 创建图标IconRadio面板 * 创建图标IconRadio面板
*
* @param icon 图标 * @param icon 图标
* @param jradiobtn 按钮 * @param jradiobtn 按钮
* @return JPanel对象 * @return JPanel对象
@ -423,6 +451,7 @@ public class FRGUIPaneFactory {
/** /**
* 计算宽度 * 计算宽度
*
* @param width 宽度输入值 * @param width 宽度输入值
* @return w 宽度输出值 * @return w 宽度输出值
*/ */
@ -443,6 +472,7 @@ public class FRGUIPaneFactory {
/** /**
* 计算高度 * 计算高度
*
* @param height 高度输入值 * @param height 高度输入值
* @return 高度输出值 * @return 高度输出值
*/ */

3
designer_base/src/com/fr/design/utils/DesignUtils.java

@ -52,7 +52,8 @@ public class DesignUtils {
public static boolean isStarted() { public static boolean isStarted() {
try { try {
new Socket("localhost", port); new Socket("localhost", port);
return true; // return true;
return false;
} catch (Exception exp) { } catch (Exception exp) {
} }

Loading…
Cancel
Save