Browse Source

Merge pull request #1038 in BA/design from ~MOMEAK/design9.0:9.0 to 9.0

* commit '313325ee45e5e2d16e5df9d5ddad80e2fd2617c8':
  REPORT-2897 9.0设计器修改 去掉空格,放个空的uilabel做对齐
  REPORT-2897 9.0设计器修改 视觉微调
  REPORT-2897 9.0设计器修改 去掉空格,放个空的uilabel做对齐
  REPORT-2897 9.0设计器修改 去掉空格,放个空的uilabel做对齐
  REPORT-2897 9.0设计器修改 视觉优化
master
superman 7 years ago
parent
commit
d48d3ec615
  1. 397
      designer/src/com/fr/design/expand/ExpandFatherPane.java
  2. 2
      designer/src/com/fr/design/mainframe/CellElementPropertyPane.java
  3. 9
      designer/src/com/fr/design/mainframe/ReportFloatPane.java
  4. 399
      designer/src/com/fr/design/mainframe/cell/CellElementEditPane.java
  5. 493
      designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java
  6. 258
      designer/src/com/fr/design/mainframe/cell/settingpane/CellStylePane.java
  7. 338
      designer/src/com/fr/design/mainframe/cell/settingpane/style/CustomStylePane.java
  8. 310
      designer/src/com/fr/design/mainframe/cell/settingpane/style/PredefinedStylePane.java
  9. 222
      designer/src/com/fr/design/present/PresentPane.java
  10. 452
      designer/src/com/fr/design/widget/CellWidgetCardPane.java
  11. 559
      designer/src/com/fr/design/widget/WidgetPane.java
  12. 142
      designer/src/com/fr/design/widget/ui/BasicWidgetPropertySettingPane.java
  13. 322
      designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java
  14. 113
      designer/src/com/fr/design/widget/ui/WaterMarkDictPane.java
  15. 152
      designer/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java
  16. 253
      designer/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java
  17. 372
      designer_base/src/com/fr/design/constants/UIConstants.java
  18. 31
      designer_base/src/com/fr/design/foldablepane/HeaderPane.java
  19. 3
      designer_base/src/com/fr/design/foldablepane/UIExpandablePane.java
  20. 278
      designer_base/src/com/fr/design/formula/TinyFormulaPane.java
  21. 1073
      designer_base/src/com/fr/design/gui/frpane/RegPane.java
  22. 329
      designer_base/src/com/fr/design/gui/frpane/UIComboBoxPane.java
  23. 799
      designer_base/src/com/fr/design/gui/style/FormatPane.java
  24. BIN
      designer_base/src/com/fr/design/images/buttonicon/downSelected.png
  25. BIN
      designer_base/src/com/fr/design/images/buttonicon/leftNormal.png

397
designer/src/com/fr/design/expand/ExpandFatherPane.java

@ -1,191 +1,208 @@
package com.fr.design.expand; package com.fr.design.expand;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.LayoutConstants;
import com.fr.design.event.GlobalNameListener; import com.fr.design.event.GlobalNameListener;
import com.fr.design.event.GlobalNameObserver; import com.fr.design.event.GlobalNameObserver;
import com.fr.design.gui.columnrow.ColumnRowPane; import com.fr.design.gui.columnrow.ColumnRowPane;
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.UIComboBox;
import com.fr.general.Inter; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.selection.SelectionEvent;
import com.fr.grid.selection.CellSelection; import com.fr.design.selection.SelectionListener;
import com.fr.grid.selection.Selection; import com.fr.general.Inter;
import com.fr.report.cell.cellattr.CellExpandAttr; import com.fr.grid.selection.CellSelection;
import com.fr.design.selection.SelectionEvent; import com.fr.grid.selection.Selection;
import com.fr.design.selection.SelectionListener; import com.fr.report.cell.cellattr.CellExpandAttr;
import com.fr.stable.ColumnRow; import com.fr.stable.ColumnRow;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
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;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener; public abstract class ExpandFatherPane extends JPanel implements GlobalNameObserver {
public abstract class ExpandFatherPane extends JPanel implements GlobalNameObserver { public UIComboBox comboBox;
private ColumnRowPane customParentColumnRowPane;
private UIComboBox comboBox; private ElementCasePane ePane;
private ColumnRowPane customParentColumnRowPane; private SelectionListener gridSelectionChangeListener;
private ElementCasePane ePane; private CellSelection oldSelection;
private SelectionListener gridSelectionChangeListener; private String expandFatherName = "";
private CellSelection oldSelection; private GlobalNameListener globalNameListener = null;
private String expandFatherName = ""; private boolean isAlreadyAddListener = false;
private GlobalNameListener globalNameListener = null; public JPanel customPane;
private boolean isAlreadyAddListener = false; private CardLayout cardLayout;
private final JPanel customPane;
public ExpandFatherPane() {
public ExpandFatherPane() { this.setLayout(new BorderLayout(0, LayoutConstants.VGAP_SMALL));
this.setLayout(new BorderLayout(0, LayoutConstants.VGAP_SMALL)); comboBox = new UIComboBox(new String[]{
comboBox = new UIComboBox(new String[]{ Inter.getLocText("FR-Designer_None"),
Inter.getLocText("FR-Designer_None"), Inter.getLocText("FR-Designer_DEFAULT"),
Inter.getLocText("FR-Designer_DEFAULT"), Inter.getLocText("FR-Designer_Custom")});
Inter.getLocText("FR-Designer_Custom")}); cardLayout = new CardLayout();
final CardLayout cardLayout = new CardLayout(); customPane = new JPanel(cardLayout);
customPane = new JPanel(cardLayout); customParentColumnRowPane = new ColumnRowPane() {
customParentColumnRowPane = new ColumnRowPane() {
@Override
@Override public Dimension getPreferredSize() {
public Dimension getPreferredSize() { return new Dimension(super.getPreferredSize().width, 20);
return new Dimension(super.getPreferredSize().width, 20); }
}
public void setGlobalName() {
public void setGlobalName() { if (shouldResponseNameListener()) {
if (shouldResponseNameListener()) { globalNameListener.setGlobalName(expandFatherName);
globalNameListener.setGlobalName(expandFatherName); }
} }
} };
};
UIButton imageButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/select.png"));
UIButton imageButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/select.png")); imageButton.setPreferredSize(new Dimension(24, 20));
imageButton.setPreferredSize(new Dimension(24, 20)); JPanel cc = new JPanel(new BorderLayout(LayoutConstants.HGAP_SMALL, 0));
JPanel cc = new JPanel(new BorderLayout(LayoutConstants.HGAP_SMALL, 0)); cc.add(customParentColumnRowPane, BorderLayout.CENTER);
cc.add(customParentColumnRowPane, BorderLayout.CENTER); cc.add(imageButton, BorderLayout.EAST);
cc.add(imageButton, BorderLayout.EAST); customPane.add(cc, "content");
customPane.add(cc, "content"); customPane.add(new JPanel(), "none");
customPane.add(new JPanel(), "none"); customPane.setPreferredSize(new Dimension(0, 0));
customPane.setPreferredSize(new Dimension(0, 0) ); this.add(comboBox, BorderLayout.NORTH);
this.add(comboBox, BorderLayout.NORTH); this.add(customPane, BorderLayout.CENTER);
this.add(customPane, BorderLayout.CENTER);
comboBox.addItemListener(new ItemListener() {
comboBox.addItemListener(new ItemListener() {
@Override
@Override public void itemStateChanged(ItemEvent e) {
public void itemStateChanged(ItemEvent e) { if (comboBox.getSelectedIndex() == 2) {
if(comboBox.getSelectedIndex() == 2){ customPane.setPreferredSize(new Dimension(100, 20));
customPane.setPreferredSize(new Dimension(100, 20) ); cardLayout.show(customPane, "content");
cardLayout.show(customPane,"content"); } else {
}else { cardLayout.show(customPane, "none");
cardLayout.show(customPane,"none"); customPane.setPreferredSize(new Dimension(0, 0));
customPane.setPreferredSize(new Dimension(0, 0) ); }
} // cardLayout.show(customPane, comboBox.getSelectedIndex() == 2 ? "content" : "none");
// cardLayout.show(customPane, comboBox.getSelectedIndex() == 2 ? "content" : "none"); if (globalNameListener != null && shouldResponseNameListener()) {
if (globalNameListener != null && shouldResponseNameListener()) { globalNameListener.setGlobalName(expandFatherName);
globalNameListener.setGlobalName(expandFatherName); }
} }
} });
}); imageButton.addActionListener(imageActionListener);
imageButton.addActionListener(new ActionListener() { comboBox.setSelectedIndex(1);
}
@Override
public void actionPerformed(ActionEvent e) { ItemListener comboBoxItemListener = new ItemListener() {
@Override
if (ePane == null || isAlreadyAddListener) { public void itemStateChanged(ItemEvent e) {
return; if (comboBox.getSelectedIndex() == 2) {
} customPane.setPreferredSize(new Dimension(100, 20));
oldSelection = (CellSelection) ePane.getSelection(); cardLayout.show(customPane, "content");
ePane.getGrid().setNotShowingTableSelectPane(false); } else {
ePane.setEditable(false); cardLayout.show(customPane, "none");
ePane.repaint(10); customPane.setPreferredSize(new Dimension(0, 0));
}
gridSelectionChangeListener = new SelectionListener() { // cardLayout.show(customPane, comboBox.getSelectedIndex() == 2 ? "content" : "none");
if (globalNameListener != null && shouldResponseNameListener()) {
@Override globalNameListener.setGlobalName(expandFatherName);
public void selectionChanged(SelectionEvent e) { }
Selection selection = ePane.getSelection(); }
if (selection instanceof CellSelection) { };
CellSelection cellselection = (CellSelection) selection;
ColumnRow cr = ColumnRow.valueOf(cellselection.getColumn(), cellselection.getRow()); ActionListener imageActionListener = new ActionListener() {
ePane.setOldSelecton(oldSelection); @Override
customParentColumnRowPane.setColumnRow(cr); public void actionPerformed(ActionEvent e) {
} if (ePane == null || isAlreadyAddListener) {
ePane.removeSelectionChangeListener(gridSelectionChangeListener); return;
isAlreadyAddListener = false; }
ePane.getGrid().setNotShowingTableSelectPane(true); oldSelection = (CellSelection) ePane.getSelection();
ePane.setEditable(true); ePane.getGrid().setNotShowingTableSelectPane(false);
ePane.repaint(); ePane.setEditable(false);
} ePane.repaint(10);
};
ePane.addSelectionChangeListener(gridSelectionChangeListener); gridSelectionChangeListener = new SelectionListener() {
isAlreadyAddListener = true;
} @Override
}); public void selectionChanged(SelectionEvent e) {
comboBox.setSelectedIndex(1); Selection selection = ePane.getSelection();
} if (selection instanceof CellSelection) {
CellSelection cellselection = (CellSelection) selection;
/** ColumnRow cr = ColumnRow.valueOf(cellselection.getColumn(), cellselection.getRow());
* @param listener 观察者监听事件 ePane.setOldSelecton(oldSelection);
*/ customParentColumnRowPane.setColumnRow(cr);
public void registerNameListener(GlobalNameListener listener) { }
globalNameListener = listener; ePane.removeSelectionChangeListener(gridSelectionChangeListener);
} isAlreadyAddListener = false;
ePane.getGrid().setNotShowingTableSelectPane(true);
/** ePane.setEditable(true);
* @return ePane.repaint();
*/ }
public boolean shouldResponseNameListener() { };
return true; ePane.addSelectionChangeListener(gridSelectionChangeListener);
} isAlreadyAddListener = true;
}
protected abstract ColumnRow getColumnRow(CellExpandAttr cellExpandAttr); };
protected abstract boolean isParentDefault(CellExpandAttr cellExpandAttr);
/**
public void populate(CellExpandAttr cellExpandAttr) { * @param listener 观察者监听事件
ColumnRow columnRow = getColumnRow(cellExpandAttr); */
if (isParentDefault(cellExpandAttr)) { public void registerNameListener(GlobalNameListener listener) {
comboBox.setSelectedIndex(1); globalNameListener = listener;
this.customParentColumnRowPane.populate(ColumnRow.valueOf(0, 0)); }
} else if (ColumnRow.validate(columnRow)) {
comboBox.setSelectedIndex(2); /**
this.customParentColumnRowPane.populate(columnRow); * @return
} else { */
comboBox.setSelectedIndex(0); public boolean shouldResponseNameListener() {
this.customParentColumnRowPane.populate(ColumnRow.valueOf(0, 0)); return true;
} }
}
protected abstract ColumnRow getColumnRow(CellExpandAttr cellExpandAttr);
public void setGlobalName(String name) { protected abstract boolean isParentDefault(CellExpandAttr cellExpandAttr);
expandFatherName = name;
this.comboBox.setGlobalName(name); public void populate(CellExpandAttr cellExpandAttr) {
} ColumnRow columnRow = getColumnRow(cellExpandAttr);
if (isParentDefault(cellExpandAttr)) {
protected abstract void setValue(CellExpandAttr cellExpandAttr, boolean isDefault, ColumnRow columnRow); comboBox.setSelectedIndex(1);
this.customParentColumnRowPane.populate(ColumnRow.valueOf(0, 0));
public void update(CellExpandAttr cellExpandAttr) { } else if (ColumnRow.validate(columnRow)) {
if (cellExpandAttr == null) { comboBox.setSelectedIndex(2);
cellExpandAttr = new CellExpandAttr(); this.customParentColumnRowPane.populate(columnRow);
} } else {
int i = comboBox.getSelectedIndex(); comboBox.setSelectedIndex(0);
switch (i) { this.customParentColumnRowPane.populate(ColumnRow.valueOf(0, 0));
case 1: }
setValue(cellExpandAttr, true, null); }
break;
case 2:
setValue(cellExpandAttr, false, this.customParentColumnRowPane.update()); public void setGlobalName(String name) {
break; expandFatherName = name;
default: this.comboBox.setGlobalName(name);
setValue(cellExpandAttr, false, null); }
break;
} protected abstract void setValue(CellExpandAttr cellExpandAttr, boolean isDefault, ColumnRow columnRow);
}
public void update(CellExpandAttr cellExpandAttr) {
public void setElementCasePane(ElementCasePane ePane) { if (cellExpandAttr == null) {
this.ePane = ePane; cellExpandAttr = new CellExpandAttr();
} }
int i = comboBox.getSelectedIndex();
switch (i) {
case 1:
setValue(cellExpandAttr, true, null);
break;
case 2:
setValue(cellExpandAttr, false, this.customParentColumnRowPane.update());
break;
default:
setValue(cellExpandAttr, false, null);
break;
}
}
public void setElementCasePane(ElementCasePane ePane) {
this.ePane = ePane;
}
} }

2
designer/src/com/fr/design/mainframe/CellElementPropertyPane.java

@ -101,7 +101,7 @@ public class CellElementPropertyPane extends DockingView {
title.setHorizontalAlignment(SwingConstants.CENTER); title.setHorizontalAlignment(SwingConstants.CENTER);
title.setVerticalAlignment(SwingConstants.CENTER); title.setVerticalAlignment(SwingConstants.CENTER);
titlePane.add(title, BorderLayout.CENTER); titlePane.add(title, BorderLayout.CENTER);
titlePane.setBorder(BorderFactory.createEmptyBorder(0,0,1,0)); titlePane.setBorder(BorderFactory.createEmptyBorder(10,0,1,0));
// this.add(titlePane, BorderLayout.NORTH); // this.add(titlePane, BorderLayout.NORTH);
this.add(cellElementEditPane, BorderLayout.CENTER); this.add(cellElementEditPane, BorderLayout.CENTER);

9
designer/src/com/fr/design/mainframe/ReportFloatPane.java

@ -43,17 +43,18 @@ public class ReportFloatPane extends JPanel {
topToolBar.setLayout(new BorderLayout()); topToolBar.setLayout(new BorderLayout());
insertFloatMenu = createInsertToolBar(); insertFloatMenu = createInsertToolBar();
topToolBar.add(createButtonUI()); topToolBar.add(createButtonUI());
topToolBar.setBorder(BorderFactory.createEmptyBorder(2, 10, 2, 0)); UILabel emptyLabel = new UILabel();
emptyLabel.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 0));
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
double[] columnSize = {p, f}; double[] columnSize = {p, p, p, f};
double[] rowSize = {p}; double[] rowSize = {p};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{new UILabel(" " + Inter.getLocText("FR-Designer_Add_FloatElement")), topToolBar}, new Component[]{new UILabel(), new UILabel(Inter.getLocText("FR-Designer_Add_FloatElement")), emptyLabel, topToolBar},
}; };
JPanel leftTopPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); JPanel leftTopPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
leftTopPane.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 10)); leftTopPane.setBorder(BorderFactory.createEmptyBorder(10, 4, 0, 13));
this.add(leftTopPane, BorderLayout.NORTH); this.add(leftTopPane, BorderLayout.NORTH);
} }

399
designer/src/com/fr/design/mainframe/cell/CellElementEditPane.java

@ -1,194 +1,207 @@
package com.fr.design.mainframe.cell; package com.fr.design.mainframe.cell;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.fun.CellAttributeProvider; import com.fr.design.fun.CellAttributeProvider;
import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.ibutton.UIHeadGroup;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itabpane.TitleChangeListener; import com.fr.design.gui.itabpane.TitleChangeListener;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.mainframe.cell.settingpane.*; import com.fr.design.mainframe.cell.settingpane.*;
import com.fr.design.utils.DesignUtils; import com.fr.design.utils.DesignUtils;
import com.fr.general.ComparatorUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Inter; import com.fr.general.ComparatorUtils;
import com.fr.grid.selection.CellSelection; import com.fr.general.Inter;
import com.fr.grid.selection.Selection; import com.fr.grid.selection.CellSelection;
import com.fr.report.cell.CellElement; import com.fr.grid.selection.Selection;
import com.fr.report.cell.DefaultTemplateCellElement; import com.fr.report.cell.CellElement;
import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.elementcase.TemplateElementCase; import com.fr.report.cell.TemplateCellElement;
import com.fr.report.elementcase.TemplateElementCase;
import javax.swing.*;
import java.awt.*; import javax.swing.*;
import java.util.ArrayList; import java.awt.*;
import java.util.List; import java.util.ArrayList;
import java.util.List;
/**
* the new 单元格属性表 !!!:只对当前选中的设置面板进行数据的populate和update操作 /**
* * the new 单元格属性表 !!!:只对当前选中的设置面板进行数据的populate和update操作
* @author zhou *
* @since 2012-5-8下午12:18:53 * @author zhou
*/ * @since 2012-5-8下午12:18:53
public class CellElementEditPane extends BasicPane { */
private static int TIME_GAP = 80; public class CellElementEditPane extends BasicPane {
private List<AbstractCellAttrPane> paneList; private static int TIME_GAP = 80;
private TemplateCellElement cellelement; private List<AbstractCellAttrPane> paneList;
private ElementCasePane ePane; private TemplateCellElement cellelement;
private UIHeadGroup tabsHeaderIconPane; private ElementCasePane ePane;
private UIHeadGroup tabsHeaderIconPane;
private boolean isEditing;
private int PaneListIndex; private boolean isEditing;
private CardLayout card; private int PaneListIndex;
private JPanel center; private CardLayout card;
private JPanel downTitle; private JPanel center;
private JPanel title; private JPanel downTitle;
private UILabel titlename; private JPanel title;
private TitleChangeListener titleChangeListener = null; private UILabel titlename;
private TitleChangeListener titleChangeListener = null;
private CellAttributeProvider cellAttributeProvider = null;
private CellAttributeProvider cellAttributeProvider = null;
public CellElementEditPane() {
setLayout(new BorderLayout()); public static void main(String[] args){
initPaneList(); JFrame jf = new JFrame("test");
String[] iconArray = new String[paneList.size()]; jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
card = new CardLayout(); JPanel content = (JPanel) jf.getContentPane();
center = new JPanel(card); content.setLayout(new BorderLayout());
for (int i = 0; i < paneList.size(); i++) { content.add(new CellElementEditPane(), BorderLayout.CENTER);
AbstractCellAttrPane pane = paneList.get(i); GUICoreUtils.centerWindow(jf);
iconArray[i] = pane.getIconPath(); jf.setSize(290, 400);
center.add(pane, pane.title4PopupWindow()); jf.setVisible(true);
} }
tabsHeaderIconPane = new UIHeadGroup(iconArray) { public CellElementEditPane() {
@Override setLayout(new BorderLayout());
public void tabChanged(int index) { initPaneList();
card.show(center, paneList.get(index).title4PopupWindow()); String[] iconArray = new String[paneList.size()];
paneList.get(index).populateBean(cellelement, ePane);// 设置面板变了,也要populate card = new CardLayout();
paneList.get(index).addAttributeChangeListener(listener); center = new JPanel(card);
if (titleChangeListener != null) { for (int i = 0; i < paneList.size(); i++) {
titleChangeListener.fireTitleChange(getSelectedTabName()); AbstractCellAttrPane pane = paneList.get(i);
} iconArray[i] = pane.getIconPath();
} center.add(pane, pane.title4PopupWindow());
}; }
tabsHeaderIconPane.setNeedLeftRightOutLine(false);
tabsHeaderIconPane = new UIHeadGroup(iconArray) {
downTitle = new JPanel(); @Override
downTitle.setLayout(new BorderLayout()); public void tabChanged(int index) {
downTitle.add(tabsHeaderIconPane, BorderLayout.NORTH); card.show(center, paneList.get(index).title4PopupWindow());
downTitle.add(center, BorderLayout.CENTER); paneList.get(index).populateBean(cellelement, ePane);// 设置面板变了,也要populate
paneList.get(index).addAttributeChangeListener(listener);
this.add(downTitle, BorderLayout.CENTER); if (titleChangeListener != null) {
titleChangeListener.fireTitleChange(getSelectedTabName());
} }
}
};
public void setSelectedIndex(String... id) { tabsHeaderIconPane.setNeedLeftRightOutLine(false);
String firstid = id[0];
for (int i = 0; i < paneList.size(); i++) { downTitle = new JPanel();
if (ComparatorUtils.equals(firstid, paneList.get(i).title4PopupWindow())) { downTitle.setLayout(new BorderLayout());
tabsHeaderIconPane.setSelectedIndex(i); downTitle.add(tabsHeaderIconPane, BorderLayout.NORTH);
if (id.length == 2) { center.setBorder(BorderFactory.createEmptyBorder(0, -10, 0, -10));
paneList.get(i).setSelectedByIds(1, id); downTitle.add(center, BorderLayout.CENTER);
}
break; this.add(downTitle, BorderLayout.CENTER);
}
} }
}
public void populate(ElementCasePane elementCasePane) { public void setSelectedIndex(String... id) {
if (isEditing) { String firstid = id[0];
isEditing = false; for (int i = 0; i < paneList.size(); i++) {
return; if (ComparatorUtils.equals(firstid, paneList.get(i).title4PopupWindow())) {
} tabsHeaderIconPane.setSelectedIndex(i);
if (elementCasePane == null) { if (id.length == 2) {
return; paneList.get(i).setSelectedByIds(1, id);
} }
this.ePane = elementCasePane; break;
Selection selection = ePane.getSelection(); }
final TemplateElementCase elementCase = ePane.getEditingElementCase(); }
if (elementCase != null && selection instanceof CellSelection) { }
CellSelection cs = (CellSelection) selection;
// isSelectedOneCell()方法放在外面这儿一起算,因为它是比较耗时间的 public void populate(ElementCasePane elementCasePane) {
// 如果直接只传递elementCasePane,那么每个AbstratCellAttrPane都要算一次,很浪费时间 if (isEditing) {
isEditing = false;
CellElement cellElement = elementCase.getCellElement(cs.getColumn(), cs.getRow()); return;
if (cellElement == null) { }
cellElement = new DefaultTemplateCellElement(cs.getColumn(), cs.getRow()); if (elementCasePane == null) {
//默认选中的是A1单元格,所以若是A1单元格没有加到列表时要加上,否则在聚合报表时会出错 return;
if (cs.isSelectedOneCell(elementCasePane) && (cs.getColumn() + cs.getRow() == 0)) { }
elementCase.addCellElement((TemplateCellElement) cellElement); this.ePane = elementCasePane;
} Selection selection = ePane.getSelection();
} final TemplateElementCase elementCase = ePane.getEditingElementCase();
if (elementCase != null && selection instanceof CellSelection) {
cellelement = (TemplateCellElement) cellElement; CellSelection cs = (CellSelection) selection;
// 这儿只对当前选中的面板populate // isSelectedOneCell()方法放在外面这儿一起算,因为它是比较耗时间的
paneList.get(tabsHeaderIconPane.getSelectedIndex()).populateBean(cellelement, ePane); // 如果直接只传递elementCasePane,那么每个AbstratCellAttrPane都要算一次,很浪费时间
paneList.get(tabsHeaderIconPane.getSelectedIndex()).addAttributeChangeListener(listener);
} CellElement cellElement = elementCase.getCellElement(cs.getColumn(), cs.getRow());
} if (cellElement == null) {
cellElement = new DefaultTemplateCellElement(cs.getColumn(), cs.getRow());
AttributeChangeListener listener = new AttributeChangeListener() { //默认选中的是A1单元格,所以若是A1单元格没有加到列表时要加上,否则在聚合报表时会出错
@Override if (cs.isSelectedOneCell(elementCasePane) && (cs.getColumn() + cs.getRow() == 0)) {
public void attributeChange() { elementCase.addCellElement((TemplateCellElement) cellElement);
boolean isChooseFatherPane = ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("FR-Designer_LeftParent")) || }
ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("FR-Designer_ExpandD_Up_Father_Cell")); }
boolean isChooseExpandPane = ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("FR-Designer_ExpandD_Expand_Direction"));
if (isChooseExpandPane || isChooseFatherPane) { cellelement = (TemplateCellElement) cellElement;
ePane.setSupportDefaultParentCalculate(true); // 这儿只对当前选中的面板populate
} paneList.get(tabsHeaderIconPane.getSelectedIndex()).populateBean(cellelement, ePane);
paneList.get(tabsHeaderIconPane.getSelectedIndex()).addAttributeChangeListener(listener);
if (ePane.getSelection() instanceof CellSelection) { }
isEditing = true; }
if (ePane.isSelectedOneCell()) {
paneList.get(tabsHeaderIconPane.getSelectedIndex()).updateBean(); AttributeChangeListener listener = new AttributeChangeListener() {
ePane.fireTargetModified(); @Override
} else { public void attributeChange() {
paneList.get(tabsHeaderIconPane.getSelectedIndex()).updateBeans(); boolean isChooseFatherPane = ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("FR-Designer_LeftParent")) ||
ePane.fireTargetModified(); ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("FR-Designer_ExpandD_Up_Father_Cell"));
} boolean isChooseExpandPane = ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("FR-Designer_ExpandD_Expand_Direction"));
} else { if (isChooseExpandPane || isChooseFatherPane) {
DesignUtils.errorMessage(Inter.getLocText(new String[]{"FR-Designer_Not_use_a_cell_attribute_table_editing", "FR-Designer_Float_Element"}) + "!"); ePane.setSupportDefaultParentCalculate(true);
} }
ePane.setSupportDefaultParentCalculate(false);
} if (ePane.getSelection() instanceof CellSelection) {
}; isEditing = true;
if (ePane.isSelectedOneCell()) {
public String getSelectedTabName() { paneList.get(tabsHeaderIconPane.getSelectedIndex()).updateBean();
return paneList.get(tabsHeaderIconPane.getSelectedIndex()).title4PopupWindow(); ePane.fireTargetModified();
} } else {
paneList.get(tabsHeaderIconPane.getSelectedIndex()).updateBeans();
/** ePane.fireTargetModified();
* 添加TitleChangeListener }
* } else {
* @param titleChangeListener titleChangeListener 监听 DesignUtils.errorMessage(Inter.getLocText(new String[]{"FR-Designer_Not_use_a_cell_attribute_table_editing", "FR-Designer_Float_Element"}) + "!");
*/ }
public void addTitleChangeListner(TitleChangeListener titleChangeListener) { ePane.setSupportDefaultParentCalculate(false);
this.titleChangeListener = titleChangeListener; }
} };
@Override public String getSelectedTabName() {
protected String title4PopupWindow() { return paneList.get(tabsHeaderIconPane.getSelectedIndex()).title4PopupWindow();
return Inter.getLocText("FR-Designer_CellElement_Property_Table"); }
}
/**
@Override * 添加TitleChangeListener
public Dimension getPreferredSize() { *
return new Dimension(240, 340); * @param titleChangeListener titleChangeListener 监听
} */
public void addTitleChangeListner(TitleChangeListener titleChangeListener) {
private void initPaneList() { this.titleChangeListener = titleChangeListener;
paneList = new ArrayList<AbstractCellAttrPane>(); }
paneList.add(new CellExpandAttrPane());
paneList.add(new CellStylePane()); @Override
paneList.add(new CellPresentPane()); protected String title4PopupWindow() {
paneList.add(new CellOtherSetPane()); return Inter.getLocText("FR-Designer_CellElement_Property_Table");
}
cellAttributeProvider = ExtraDesignClassManager.getInstance().getSingle(CellAttributeProvider.MARK_STRING);
if (cellAttributeProvider != null) { @Override
paneList.add((AbstractCellAttrPane) cellAttributeProvider.createCellAttributePane()); public Dimension getPreferredSize() {
} return new Dimension(240, 340);
} }
private void initPaneList() {
paneList = new ArrayList<AbstractCellAttrPane>();
paneList.add(new CellExpandAttrPane());
paneList.add(new CellStylePane());
paneList.add(new CellPresentPane());
paneList.add(new CellOtherSetPane());
cellAttributeProvider = ExtraDesignClassManager.getInstance().getSingle(CellAttributeProvider.MARK_STRING);
if (cellAttributeProvider != null) {
paneList.add((AbstractCellAttrPane) cellAttributeProvider.createCellAttributePane());
}
}
} }

493
designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java

@ -1,242 +1,253 @@
package com.fr.design.mainframe.cell.settingpane; package com.fr.design.mainframe.cell.settingpane;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.LayoutConstants;
import com.fr.design.expand.ExpandLeftFatherPane; import com.fr.design.expand.ExpandLeftFatherPane;
import com.fr.design.expand.ExpandUpFatherPane; import com.fr.design.expand.ExpandUpFatherPane;
import com.fr.design.expand.SortExpandAttrPane; import com.fr.design.expand.SortExpandAttrPane;
import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.foldablepane.UIExpandablePane;
import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.layout.TableLayout; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayout;
import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.report.cell.DefaultTemplateCellElement; import com.fr.report.cell.DefaultTemplateCellElement;
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.elementcase.TemplateElementCase; import com.fr.report.elementcase.TemplateElementCase;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
/** /**
* 单元格扩展属性面板是属性表面板的一个种类 * 单元格扩展属性面板是属性表面板的一个种类
*/ */
public class CellExpandAttrPane extends AbstractCellAttrPane { public class CellExpandAttrPane extends AbstractCellAttrPane {
private UIButtonGroup<Byte> expandDirectionButton; private static final int SENIOR_HORIZONTAL_GAP = 12;
private ExpandLeftFatherPane leftFatherPane; private static final int BASIC_HORIZONTAL_GAP = 20;
private ExpandUpFatherPane rightFatherPane; private UIButtonGroup<Byte> expandDirectionButton;
private UICheckBox horizontalExpandableCheckBox; private ExpandLeftFatherPane leftFatherPane;
private UICheckBox verticalExpandableCheckBox; private ExpandUpFatherPane rightFatherPane;
private SortExpandAttrPane sortAfterExpand; private UICheckBox horizontalExpandableCheckBox;
private JPanel layoutPane; private UICheckBox verticalExpandableCheckBox;
private JPanel basicPane; private SortExpandAttrPane sortAfterExpand;
private JPanel seniorPane; private JPanel layoutPane;
private JPanel basicPane;
/** private JPanel seniorPane;
*
* @return /**
*/ * @return
public JPanel createContentPane() { */
String[] nameArray = {Inter.getLocText("ExpandD-Not_Expand"), Inter.getLocText("Utils-Top_to_Bottom"), Inter.getLocText("Utils-Left_to_Right")}; public JPanel createContentPane() {
Icon[] iconArray = { String[] nameArray = {Inter.getLocText("ExpandD-Not_Expand"), Inter.getLocText("Utils-Top_to_Bottom"), Inter.getLocText("Utils-Left_to_Right")};
BaseUtils.readIcon("/com/fr/design/images/expand/none16x16.png"), Icon[] iconArray = {
BaseUtils.readIcon("/com/fr/design/images/expand/vertical.png"), BaseUtils.readIcon("/com/fr/design/images/expand/none16x16.png"),
BaseUtils.readIcon("/com/fr/design/images/expand/landspace.png") BaseUtils.readIcon("/com/fr/design/images/expand/vertical.png"),
}; BaseUtils.readIcon("/com/fr/design/images/expand/landspace.png")
Byte[] valueArray = {Constants.NONE, Constants.TOP_TO_BOTTOM, Constants.LEFT_TO_RIGHT}; };
expandDirectionButton = new UIButtonGroup<Byte>(iconArray, valueArray); Byte[] valueArray = {Constants.NONE, Constants.TOP_TO_BOTTOM, Constants.LEFT_TO_RIGHT};
expandDirectionButton.setAllToolTips(nameArray); expandDirectionButton = new UIButtonGroup<Byte>(iconArray, valueArray);
leftFatherPane = new ExpandLeftFatherPane(); expandDirectionButton.setAllToolTips(nameArray);
rightFatherPane = new ExpandUpFatherPane(); leftFatherPane = new ExpandLeftFatherPane();
horizontalExpandableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Horizontal_Extendable")); rightFatherPane = new ExpandUpFatherPane();
verticalExpandableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Vertical_Extendable")); horizontalExpandableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Horizontal_Extendable"));
sortAfterExpand = new SortExpandAttrPane(); verticalExpandableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Vertical_Extendable"));
initAllNames(); sortAfterExpand = new SortExpandAttrPane();
return layoutPane(); initAllNames();
} return layoutPane();
}
public static void main(String[] args){
// JFrame jf = new JFrame("test"); public static void main(String[] args) {
// jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JFrame jf = new JFrame("test");
// JPanel content = (JPanel) jf.getContentPane(); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// content.setLayout(new BorderLayout()); JPanel content = (JPanel) jf.getContentPane();
// content.add(new CellExpandAttrPane().layoutPane(), BorderLayout.CENTER); content.setLayout(new BorderLayout());
// GUICoreUtils.centerWindow(jf); content.add(new CellExpandAttrPane().layoutPane(), BorderLayout.CENTER);
// jf.setSize(290, 400); GUICoreUtils.centerWindow(jf);
// jf.setVisible(true); jf.setSize(290, 400);
} jf.setVisible(true);
}
private void initAllNames() {
expandDirectionButton.setGlobalName(Inter.getLocText("FR-Designer_ExpandD_Expand_Direction")); private void initAllNames() {
leftFatherPane.setGlobalName(Inter.getLocText("FR-Designer_LeftParent")); expandDirectionButton.setGlobalName(Inter.getLocText("FR-Designer_ExpandD_Expand_Direction"));
rightFatherPane.setGlobalName(Inter.getLocText("FR-Designer_ExpandD_Up_Father_Cell")); leftFatherPane.setGlobalName(Inter.getLocText("FR-Designer_LeftParent"));
horizontalExpandableCheckBox.setGlobalName(Inter.getLocText("FR-Designer_ExpandD_Expandable")); rightFatherPane.setGlobalName(Inter.getLocText("FR-Designer_ExpandD_Up_Father_Cell"));
verticalExpandableCheckBox.setGlobalName(Inter.getLocText("FR-Designer_ExpandD_Expandable")); horizontalExpandableCheckBox.setGlobalName(Inter.getLocText("FR-Designer_ExpandD_Expandable"));
} verticalExpandableCheckBox.setGlobalName(Inter.getLocText("FR-Designer_ExpandD_Expandable"));
}
private JPanel layoutPane() {
layoutPane = new JPanel(new BorderLayout()); private JPanel layoutPane() {
basicPane = new JPanel(); layoutPane = new JPanel(new BorderLayout());
seniorPane = new JPanel(); basicPane = new JPanel();
basicPane = new UIExpandablePane(Inter.getLocText("FR-Designer_Basic"),290,24,basicPane()); seniorPane = new JPanel();
seniorPane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"),290,24,seniorPane()); basicPane = new UIExpandablePane(Inter.getLocText("FR-Designer_Basic"), 290, 24, basicPane());
layoutPane.add(basicPane,BorderLayout.NORTH); seniorPane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 290, 24, seniorPane());
layoutPane.add(seniorPane,BorderLayout.CENTER); layoutPane.add(basicPane, BorderLayout.NORTH);
return layoutPane; layoutPane.add(seniorPane, BorderLayout.CENTER);
} return layoutPane;
}
private JPanel basicPane(){
double f = TableLayout.FILL; private JPanel basicPane() {
double p = TableLayout.PREFERRED; double f = TableLayout.FILL;
Component[][] components = new Component[][]{ double p = TableLayout.PREFERRED;
new Component[]{null,null}, UILabel direction = new UILabel(Inter.getLocText("FR-Designer_ExpandD_Expand_Direction"), SwingConstants.LEFT);
new Component[]{new UILabel(" "+Inter.getLocText("FR-Designer_ExpandD_Expand_Direction")+" ", SwingConstants.LEFT), expandDirectionButton}, // JPanel directionPane = new JPanel(new BorderLayout());
new Component[]{new UILabel(" "+Inter.getLocText("FR-Designer_LeftParent"), SwingConstants.LEFT), leftFatherPane}, // directionPane.add(direction, BorderLayout.NORTH);
new Component[]{new UILabel(" "+Inter.getLocText("FR-Designer_ExpandD_Up_Father_Cell"), SwingConstants.LEFT), rightFatherPane}, UILabel left = new UILabel(Inter.getLocText("FR-Designer_LeftParent"), SwingConstants.LEFT);
}; JPanel leftPane = new JPanel(new BorderLayout());
double[] rowSize = {p, p, p, p, p, p}; leftPane.add(left, BorderLayout.NORTH);
double[] columnSize = {p, f}; UILabel up = new UILabel(Inter.getLocText("FR-Designer_ExpandD_Up_Father_Cell"), SwingConstants.LEFT);
int[][] rowCount = {{1, 1},{1, 1}, {1, 3}, {1, 3}}; JPanel upPane = new JPanel(new BorderLayout());
return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); upPane.add(up, BorderLayout.NORTH);
} Component[][] components = new Component[][]{
new Component[]{null, null},
private JPanel seniorPane() { new Component[]{direction, expandDirectionButton},
double f = TableLayout.FILL; new Component[]{leftPane, leftFatherPane},
double p = TableLayout.PREFERRED; new Component[]{upPane, rightFatherPane},
Component[][] components = new Component[][]{ };
new Component[]{null,null}, double[] rowSize = {p, p, p, p, p};
new Component[]{horizontalExpandableCheckBox, null}, double[] columnSize = {p, f};
new Component[]{verticalExpandableCheckBox, null}, int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}};
new Component[]{new UILabel(" "+Inter.getLocText("FR-Designer_ExpendSort"), SwingConstants.RIGHT), sortAfterExpand}, return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, BASIC_HORIZONTAL_GAP, LayoutConstants.VGAP_LARGE);
}; }
double[] rowSize = {p, p, p, p, p, p, p, p};
double[] columnSize = {p, f}; private JPanel seniorPane() {
int[][] rowCount = {{1, 1}, {1, 1}, {1, 3}, {1, 3}}; double f = TableLayout.FILL;
return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); double p = TableLayout.PREFERRED;
} UILabel expendSort = new UILabel(Inter.getLocText("FR-Designer_ExpendSort"), SwingConstants.LEFT);
JPanel expendSortPane = new JPanel(new BorderLayout());
expendSortPane.add(expendSort, BorderLayout.NORTH);
Component[][] components = new Component[][]{
@Override new Component[]{null, null},
protected void populateBean() { new Component[]{horizontalExpandableCheckBox, null},
this.leftFatherPane.setElementCasePane(elementCasePane); new Component[]{verticalExpandableCheckBox, null},
this.rightFatherPane.setElementCasePane(elementCasePane); new Component[]{expendSortPane, sortAfterExpand},
CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); };
if (cellExpandAttr == null) { double[] rowSize = {p, p, p, p, p, p, p, p};
cellExpandAttr = new CellExpandAttr(); double[] columnSize = {p, f};
cellElement.setCellExpandAttr(cellExpandAttr); int[][] rowCount = {{1, 1}, {1, 1}, {1, 3}, {1, 3}};
} return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, SENIOR_HORIZONTAL_GAP, LayoutConstants.VGAP_LARGE);
expandDirectionButton.setSelectedItem(cellExpandAttr.getDirection()); }
this.leftFatherPane.populate(cellExpandAttr);
this.rightFatherPane.populate(cellExpandAttr);
switch (cellExpandAttr.getExtendable()) { @Override
case CellExpandAttr.Both_EXTENDABLE: protected void populateBean() {
horizontalExpandableCheckBox.setSelected(true); this.leftFatherPane.setElementCasePane(elementCasePane);
verticalExpandableCheckBox.setSelected(true); this.rightFatherPane.setElementCasePane(elementCasePane);
break; CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr();
case CellExpandAttr.Vertical_EXTENDABLE: if (cellExpandAttr == null) {
horizontalExpandableCheckBox.setSelected(false); cellExpandAttr = new CellExpandAttr();
verticalExpandableCheckBox.setSelected(true); cellElement.setCellExpandAttr(cellExpandAttr);
break; }
case CellExpandAttr.Horizontal_EXTENDABLE: expandDirectionButton.setSelectedItem(cellExpandAttr.getDirection());
horizontalExpandableCheckBox.setSelected(true); this.leftFatherPane.populate(cellExpandAttr);
verticalExpandableCheckBox.setSelected(false); this.rightFatherPane.populate(cellExpandAttr);
break; switch (cellExpandAttr.getExtendable()) {
default: { case CellExpandAttr.Both_EXTENDABLE:
horizontalExpandableCheckBox.setSelected(false); horizontalExpandableCheckBox.setSelected(true);
verticalExpandableCheckBox.setSelected(false); verticalExpandableCheckBox.setSelected(true);
} break;
} case CellExpandAttr.Vertical_EXTENDABLE:
horizontalExpandableCheckBox.setSelected(false);
sortAfterExpand.populate(cellExpandAttr); verticalExpandableCheckBox.setSelected(true);
} break;
case CellExpandAttr.Horizontal_EXTENDABLE:
horizontalExpandableCheckBox.setSelected(true);
@Override verticalExpandableCheckBox.setSelected(false);
public String getIconPath() { break;
// return "com/fr/design/images/expand/cellAttr.gif"; default: {
return Inter.getLocText("FR-Designer_Expand"); horizontalExpandableCheckBox.setSelected(false);
} verticalExpandableCheckBox.setSelected(false);
}
}
@Override
public void updateBean(TemplateCellElement cellElement) { sortAfterExpand.populate(cellExpandAttr);
CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); }
if (cellExpandAttr == null) {
cellExpandAttr = new CellExpandAttr();
cellElement.setCellExpandAttr(cellExpandAttr); @Override
} public String getIconPath() {
if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_ExpandD_Expand_Direction"))) { // return "com/fr/design/images/expand/cellAttr.gif";
cellExpandAttr.setDirection(expandDirectionButton.getSelectedItem()); return Inter.getLocText("FR-Designer_Expand");
} }
if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_LeftParent"))) {
this.leftFatherPane.update(cellExpandAttr);
} @Override
if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_ExpandD_Up_Father_Cell"))) { public void updateBean(TemplateCellElement cellElement) {
this.rightFatherPane.update(cellExpandAttr); CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr();
} if (cellExpandAttr == null) {
cellExpandAttr = new CellExpandAttr();
cellElement.setCellExpandAttr(cellExpandAttr);
// extendable }
if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_ExpandD-Expandable"))) { if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_ExpandD_Expand_Direction"))) {
if (horizontalExpandableCheckBox.isSelected()) { cellExpandAttr.setDirection(expandDirectionButton.getSelectedItem());
if (verticalExpandableCheckBox.isSelected()) { }
cellExpandAttr.setExtendable(CellExpandAttr.Both_EXTENDABLE); if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_LeftParent"))) {
} else { this.leftFatherPane.update(cellExpandAttr);
cellExpandAttr.setExtendable(CellExpandAttr.Horizontal_EXTENDABLE); }
} if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_ExpandD_Up_Father_Cell"))) {
} else { this.rightFatherPane.update(cellExpandAttr);
if (verticalExpandableCheckBox.isSelected()) { }
cellExpandAttr.setExtendable(CellExpandAttr.Vertical_EXTENDABLE);
} else {
cellExpandAttr.setExtendable(CellExpandAttr.None_EXTENDABLE); // extendable
} if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_ExpandD-Expandable"))) {
} if (horizontalExpandableCheckBox.isSelected()) {
} if (verticalExpandableCheckBox.isSelected()) {
cellExpandAttr.setExtendable(CellExpandAttr.Both_EXTENDABLE);
if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("ExpandD-Sort_After_Expand"))) { } else {
sortAfterExpand.update(cellExpandAttr); cellExpandAttr.setExtendable(CellExpandAttr.Horizontal_EXTENDABLE);
} }
} else {
} if (verticalExpandableCheckBox.isSelected()) {
cellExpandAttr.setExtendable(CellExpandAttr.Vertical_EXTENDABLE);
/** } else {
* cellExpandAttr.setExtendable(CellExpandAttr.None_EXTENDABLE);
*/ }
public void updateBeans() { }
TemplateElementCase elementCase = elementCasePane.getEditingElementCase(); }
int cellRectangleCount = cs.getCellRectangleCount();
for (int rect = 0; rect < cellRectangleCount; rect++) { if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("ExpandD-Sort_After_Expand"))) {
Rectangle cellRectangle = cs.getCellRectangle(rect); sortAfterExpand.update(cellExpandAttr);
// 需要先行后列地增加新元素。 }
for (int j = 0; j < cellRectangle.height; j++) {
for (int i = 0; i < cellRectangle.width; i++) { }
int column = i + cellRectangle.x;
int row = j + cellRectangle.y; /**
TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row); *
if (cellElement == null) { */
cellElement = new DefaultTemplateCellElement(column, row); public void updateBeans() {
elementCase.addCellElement(cellElement); TemplateElementCase elementCase = elementCasePane.getEditingElementCase();
} int cellRectangleCount = cs.getCellRectangleCount();
updateBean(cellElement); for (int rect = 0; rect < cellRectangleCount; rect++) {
} Rectangle cellRectangle = cs.getCellRectangle(rect);
} // 需要先行后列地增加新元素。
} for (int j = 0; j < cellRectangle.height; j++) {
} for (int i = 0; i < cellRectangle.width; i++) {
int column = i + cellRectangle.x;
/** int row = j + cellRectangle.y;
* TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row);
* @return if (cellElement == null) {
*/ cellElement = new DefaultTemplateCellElement(column, row);
public String title4PopupWindow() { elementCase.addCellElement(cellElement);
return Inter.getLocText("ExpandD-Expand_Attribute"); }
} updateBean(cellElement);
}
}
}
}
/**
* @return
*/
public String title4PopupWindow() {
return Inter.getLocText("ExpandD-Expand_Attribute");
}
} }

258
designer/src/com/fr/design/mainframe/cell/settingpane/CellStylePane.java

@ -1,130 +1,130 @@
package com.fr.design.mainframe.cell.settingpane; package com.fr.design.mainframe.cell.settingpane;
import java.awt.*; import com.fr.base.Style;
import com.fr.design.mainframe.cell.settingpane.style.StylePane;
import javax.swing.*; import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.event.ChangeEvent; import com.fr.general.Inter;
import javax.swing.event.ChangeListener; import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.cell.TemplateCellElement;
import com.fr.base.Style; import com.fr.report.elementcase.TemplateElementCase;
import com.fr.design.mainframe.cell.settingpane.style.StylePane;
import com.fr.design.utils.gui.GUICoreUtils; import javax.swing.*;
import com.fr.general.Inter; import javax.swing.event.ChangeEvent;
import com.fr.report.cell.DefaultTemplateCellElement; import javax.swing.event.ChangeListener;
import com.fr.report.cell.TemplateCellElement; import java.awt.*;
import com.fr.report.elementcase.TemplateElementCase;
/**
/** * @author zhou
* @author zhou * @since 2012-5-11下午3:59:39
* @since 2012-5-11下午3:59:39 */
*/ public class CellStylePane extends AbstractCellAttrPane {
public class CellStylePane extends AbstractCellAttrPane { private StylePane stylePane;
private StylePane stylePane;
@Override
@Override public JPanel createContentPane() {
public JPanel createContentPane() { JPanel content = new JPanel(new BorderLayout());
JPanel content = new JPanel(new BorderLayout()); stylePane = new StylePane();
stylePane = new StylePane(); content.add(stylePane, BorderLayout.CENTER);
content.add(stylePane, BorderLayout.CENTER); stylePane.addPredefinedChangeListener(new ChangeListener() {
stylePane.addPredefinedChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) {
public void stateChanged(ChangeEvent e) { attributeChanged();
attributeChanged(); }
} });
}); stylePane.addCustomTabChangeListener(new ChangeListener() {
stylePane.addCustomTabChangeListener(new ChangeListener() {
@Override
@Override public void stateChanged(ChangeEvent e) {
public void stateChanged(ChangeEvent e) { adjustValues();// 里面的Tab切换后要及时调整滚动条,因为一些界面可能不需要滚动条
adjustValues();// 里面的Tab切换后要及时调整滚动条,因为一些界面可能不需要滚动条 }
} });
}); // content.setBorder(UIConstants.CELL_ATTR_NORMALBORDER);
return content; return content;
} }
public static void main(String[] args){ public static void main(String[] args) {
// JFrame jf = new JFrame("test"); JFrame jf = new JFrame("test");
// jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// JPanel content = (JPanel) jf.getContentPane(); JPanel content = (JPanel) jf.getContentPane();
// content.setLayout(new BorderLayout()); content.setLayout(new BorderLayout());
// content.add(new CellStylePane().createContentPane(), BorderLayout.CENTER); content.add(new CellStylePane().createContentPane(), BorderLayout.CENTER);
// GUICoreUtils.centerWindow(jf); GUICoreUtils.centerWindow(jf);
// jf.setSize(290, 400); jf.setSize(290, 400);
// jf.setVisible(true); jf.setVisible(true);
} }
@Override @Override
public String getIconPath() { public String getIconPath() {
// return "com/fr/design/images/m_format/cell.png"; // return "com/fr/design/images/m_format/cell.png";
return Inter.getLocText("FR-Designer_Style"); return Inter.getLocText("FR-Designer_Style");
} }
@Override @Override
public void updateBean(TemplateCellElement cellElement) { public void updateBean(TemplateCellElement cellElement) {
cellElement.setStyle(stylePane.updateBean()); cellElement.setStyle(stylePane.updateBean());
} }
@Override @Override
public void updateBeans() { public void updateBeans() {
if (stylePane.getSelectedIndex() == 1) { if (stylePane.getSelectedIndex() == 1) {
Style s = stylePane.updateBean(); Style s = stylePane.updateBean();
TemplateElementCase elementCase = elementCasePane.getEditingElementCase(); TemplateElementCase elementCase = elementCasePane.getEditingElementCase();
int cellRectangleCount = cs.getCellRectangleCount(); int cellRectangleCount = cs.getCellRectangleCount();
for (int rect = 0; rect < cellRectangleCount; rect++) { for (int rect = 0; rect < cellRectangleCount; rect++) {
Rectangle cellRectangle = cs.getCellRectangle(rect); Rectangle cellRectangle = cs.getCellRectangle(rect);
for (int j = 0; j < cellRectangle.height; j++) { for (int j = 0; j < cellRectangle.height; j++) {
for (int i = 0; i < cellRectangle.width; i++) { for (int i = 0; i < cellRectangle.width; i++) {
int column = i + cellRectangle.x; int column = i + cellRectangle.x;
int row = j + cellRectangle.y; int row = j + cellRectangle.y;
TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row); TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row);
if (cellElement == null) { if (cellElement == null) {
cellElement = new DefaultTemplateCellElement(column, row); cellElement = new DefaultTemplateCellElement(column, row);
elementCase.addCellElement(cellElement); elementCase.addCellElement(cellElement);
} }
cellElement.setStyle(s); cellElement.setStyle(s);
} }
} }
} }
} else { } else {
TemplateElementCase elementCase = elementCasePane.getEditingElementCase(); TemplateElementCase elementCase = elementCasePane.getEditingElementCase();
int cellRectangleCount = cs.getCellRectangleCount(); int cellRectangleCount = cs.getCellRectangleCount();
for (int rect = 0; rect < cellRectangleCount; rect++) { for (int rect = 0; rect < cellRectangleCount; rect++) {
Rectangle cellRectangle = cs.getCellRectangle(rect); Rectangle cellRectangle = cs.getCellRectangle(rect);
for (int j = 0; j < cellRectangle.height; j++) { for (int j = 0; j < cellRectangle.height; j++) {
for (int i = 0; i < cellRectangle.width; i++) { for (int i = 0; i < cellRectangle.width; i++) {
int column = i + cellRectangle.x; int column = i + cellRectangle.x;
int row = j + cellRectangle.y; int row = j + cellRectangle.y;
TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row); TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row);
if (cellElement == null) { if (cellElement == null) {
cellElement = new DefaultTemplateCellElement(column, row); cellElement = new DefaultTemplateCellElement(column, row);
elementCase.addCellElement(cellElement); elementCase.addCellElement(cellElement);
} }
Style style = cellElement.getStyle(); Style style = cellElement.getStyle();
if (style == null) { if (style == null) {
style = style.DEFAULT_STYLE; style = style.DEFAULT_STYLE;
} }
style = stylePane.updateStyle(style); style = stylePane.updateStyle(style);
cellElement.setStyle(style); cellElement.setStyle(style);
} }
} }
} }
stylePane.updateBorder();// border必须特别处理 stylePane.updateBorder();// border必须特别处理
} }
} }
@Override @Override
protected void populateBean() { protected void populateBean() {
stylePane.populateBean(cellElement.getStyle()); stylePane.populateBean(cellElement.getStyle());
stylePane.dealWithBorder(elementCasePane); stylePane.dealWithBorder(elementCasePane);
} }
@Override @Override
public String title4PopupWindow() { public String title4PopupWindow() {
return Inter.getLocText(Inter.getLocText("FR-Designer_Style")); return Inter.getLocText(Inter.getLocText("FR-Designer_Style"));
} }
public void setSelectedByIds(int level, String... id) { public void setSelectedByIds(int level, String... id) {
stylePane.setSelctedByName(id[level]); stylePane.setSelctedByName(id[level]);
} }
} }

338
designer/src/com/fr/design/mainframe/cell/settingpane/style/CustomStylePane.java

@ -1,170 +1,170 @@
package com.fr.design.mainframe.cell.settingpane.style; package com.fr.design.mainframe.cell.settingpane.style;
import com.fr.base.CellBorderStyle; import com.fr.base.CellBorderStyle;
import com.fr.base.NameStyle; import com.fr.base.NameStyle;
import com.fr.base.Style; import com.fr.base.Style;
import com.fr.design.actions.utils.ReportActionUtils; import com.fr.design.actions.utils.ReportActionUtils;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.MultiTabPane; import com.fr.design.dialog.MultiTabPane;
import com.fr.design.gui.ibutton.FiveButtonLayout; import com.fr.design.gui.ibutton.FiveButtonLayout;
import com.fr.design.gui.style.*; import com.fr.design.gui.style.*;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.style.BorderUtils; import com.fr.design.style.BorderUtils;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import javax.swing.*; import javax.swing.*;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import java.awt.*; import java.awt.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* 复杂的原型图导致复杂的画法非我所愿也 * 复杂的原型图导致复杂的画法非我所愿也
* *
* @author zhou * @author zhou
* @since 2012-5-24上午10:36:10 * @since 2012-5-24上午10:36:10
*/ */
public class CustomStylePane extends MultiTabPane<Style> { public class CustomStylePane extends MultiTabPane<Style> {
private static final int LENGTH_FOUR = 4; private static final int LENGTH_FOUR = 4;
private static final int THREE_INDEX = 3; private static final int THREE_INDEX = 3;
private static final int TWO_INDEX = 2; private static final int TWO_INDEX = 2;
private static final int ONE_INDEX = 1; private static final int ONE_INDEX = 1;
private String[] NameArray; private String[] NameArray;
private ElementCasePane reportPane; private ElementCasePane reportPane;
private BackgroundPane backgroundPane = null; private BackgroundPane backgroundPane = null;
public CustomStylePane() { public CustomStylePane() {
super(); super();
tabPane.setOneLineTab(true); tabPane.setOneLineTab(true);
tabPane.setLayout(new FiveButtonLayout(1)); tabPane.setLayout(new FiveButtonLayout(1));
} }
public static void main(String[] args) { public static void main(String[] args) {
JFrame jf = new JFrame("test"); JFrame jf = new JFrame("test");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = (JPanel) jf.getContentPane(); JPanel content = (JPanel) jf.getContentPane();
content.setLayout(new BorderLayout()); content.setLayout(new BorderLayout());
content.add(new CustomStylePane(), BorderLayout.CENTER); content.add(new CustomStylePane(), BorderLayout.CENTER);
GUICoreUtils.centerWindow(jf); GUICoreUtils.centerWindow(jf);
jf.setSize(290, 400); jf.setSize(250, 400);
jf.setVisible(true); jf.setVisible(true);
} }
/** /**
* @return * @return
*/ */
public String title4PopupWindow() { public String title4PopupWindow() {
return Inter.getLocText(new String[]{"Custom", "Style"}); return Inter.getLocText(new String[]{"Custom", "Style"});
} }
/** /**
* for ScrollBar * for ScrollBar
* *
* @param l * @param l
*/ */
public void addTabChangeListener(ChangeListener l) { public void addTabChangeListener(ChangeListener l) {
if (tabPane != null) { if (tabPane != null) {
tabPane.addChangeListener(l); tabPane.addChangeListener(l);
} }
if (backgroundPane != null) { if (backgroundPane != null) {
backgroundPane.addChangeListener(l); backgroundPane.addChangeListener(l);
} }
} }
/** /**
* *
*/ */
public void reset() { public void reset() {
populateBean(null); populateBean(null);
} }
@Override @Override
/** /**
* *
*/ */
public void populateBean(Style ob) { public void populateBean(Style ob) {
for (int i = 0; i < paneList.size(); i++) { for (int i = 0; i < paneList.size(); i++) {
((AbstractBasicStylePane) paneList.get(i)).populateBean(ob); ((AbstractBasicStylePane) paneList.get(i)).populateBean(ob);
} }
} }
@Override @Override
/** /**
* *
*/ */
public Style updateBean() { public Style updateBean() {
return updateStyle(ReportActionUtils.getCurrentStyle(reportPane)); return updateStyle(ReportActionUtils.getCurrentStyle(reportPane));
} }
/** /**
* @param style * @param style
* @return * @return
*/ */
public Style updateStyle(Style style) { public Style updateStyle(Style style) {
return ((AbstractBasicStylePane) paneList.get(tabPane.getSelectedIndex())).update(style);//只更新当前选中面板的样式 return ((AbstractBasicStylePane) paneList.get(tabPane.getSelectedIndex())).update(style);//只更新当前选中面板的样式
} }
public boolean isBorderPaneSelected() { public boolean isBorderPaneSelected() {
return tabPane.getSelectedIndex() == TWO_INDEX; return tabPane.getSelectedIndex() == TWO_INDEX;
} }
/** /**
* @param ePane * @param ePane
*/ */
public void dealWithBorder(ElementCasePane ePane) { public void dealWithBorder(ElementCasePane ePane) {
this.reportPane = ePane; this.reportPane = ePane;
Object[] fourObjectArray = BorderUtils.createCellBorderObject(reportPane); Object[] fourObjectArray = BorderUtils.createCellBorderObject(reportPane);
if (fourObjectArray != null && fourObjectArray.length % LENGTH_FOUR == 0) { if (fourObjectArray != null && fourObjectArray.length % LENGTH_FOUR == 0) {
if (fourObjectArray.length == LENGTH_FOUR) { if (fourObjectArray.length == LENGTH_FOUR) {
((BorderPane) paneList.get(ONE_INDEX)).populateBean((CellBorderStyle) fourObjectArray[0], ((Boolean) fourObjectArray[1]).booleanValue(), ((Integer) fourObjectArray[2]).intValue(), ((BorderPane) paneList.get(ONE_INDEX)).populateBean((CellBorderStyle) fourObjectArray[0], ((Boolean) fourObjectArray[1]).booleanValue(), ((Integer) fourObjectArray[2]).intValue(),
(Color) fourObjectArray[THREE_INDEX]); (Color) fourObjectArray[THREE_INDEX]);
} else { } else {
((BorderPane) paneList.get(ONE_INDEX)).populateBean(new CellBorderStyle(), Boolean.TRUE, Constants.LINE_NONE, ((BorderPane) paneList.get(ONE_INDEX)).populateBean(new CellBorderStyle(), Boolean.TRUE, Constants.LINE_NONE,
(Color) fourObjectArray[THREE_INDEX]); (Color) fourObjectArray[THREE_INDEX]);
} }
} }
} }
/** /**
* *
*/ */
public void updateBorder() { public void updateBorder() {
BorderUtils.update(reportPane, ((BorderPane) paneList.get(TWO_INDEX)).update()); BorderUtils.update(reportPane, ((BorderPane) paneList.get(TWO_INDEX)).update());
} }
/** /**
* @param ob * @param ob
* @return * @return
*/ */
public boolean accept(Object ob) { public boolean accept(Object ob) {
return ob instanceof Style && !(ob instanceof NameStyle); return ob instanceof Style && !(ob instanceof NameStyle);
} }
@Override @Override
protected List<BasicPane> initPaneList() { protected List<BasicPane> initPaneList() {
paneList = new ArrayList<BasicPane>(); paneList = new ArrayList<BasicPane>();
paneList.add(new FormatPane()); paneList.add(new FormatPane());
paneList.add(new BorderPane()); paneList.add(new BorderPane());
paneList.add(new AlignmentPane()); paneList.add(new AlignmentPane());
// paneList.add(new FRFontPane()); // paneList.add(new FRFontPane());
// paneList.add(backgroundPane = new BackgroundPane()); // paneList.add(backgroundPane = new BackgroundPane());
return paneList; return paneList;
} }
@Override @Override
/** /**
* *
*/ */
public void updateBean(Style ob) { public void updateBean(Style ob) {
} }
} }

310
designer/src/com/fr/design/mainframe/cell/settingpane/style/PredefinedStylePane.java

@ -1,155 +1,157 @@
package com.fr.design.mainframe.cell.settingpane.style; package com.fr.design.mainframe.cell.settingpane.style;
import com.fr.base.ConfigManager; import com.fr.base.ConfigManager;
import com.fr.base.NameStyle; import com.fr.base.NameStyle;
import com.fr.base.ScreenResolution; import com.fr.base.ScreenResolution;
import com.fr.base.Style; import com.fr.base.Style;
import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.constants.UIConstants;
import com.fr.design.mainframe.DesignerBean; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerBean;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.mainframe.DesignerContext;
import com.fr.general.ComparatorUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Inter; import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.ChangeEvent; import javax.swing.*;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent;
import java.awt.*; import javax.swing.event.ChangeListener;
import java.awt.event.MouseAdapter; import java.awt.*;
import java.awt.event.MouseEvent; import java.awt.event.MouseAdapter;
import java.util.Iterator; import java.awt.event.MouseEvent;
import java.util.Iterator;
public class PredefinedStylePane extends FurtherBasicBeanPane<NameStyle> implements DesignerBean {
public class PredefinedStylePane extends FurtherBasicBeanPane<NameStyle> implements DesignerBean {
private DefaultListModel defaultListModel;
private JList styleList; private DefaultListModel defaultListModel;
private ChangeListener changeListener; private JList styleList;
private ChangeListener changeListener;
public PredefinedStylePane() {
defaultListModel = new DefaultListModel(); public PredefinedStylePane() {
styleList = new JList(defaultListModel); defaultListModel = new DefaultListModel();
DefaultListCellRenderer render = new DefaultListCellRenderer() { styleList = new JList(defaultListModel);
private Style nameStyle; DefaultListCellRenderer render = new DefaultListCellRenderer() {
private Style nameStyle;
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { @Override
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof Style) {
this.nameStyle = (Style) value; if (value instanceof Style) {
this.setText(" "); this.nameStyle = (Style) value;
} this.setText(" ");
this.setPreferredSize(new Dimension(210, 22)); }
return this; this.setPreferredSize(new Dimension(210, 22));
} return this;
}
@Override
public void paintComponent(Graphics g) { @Override
super.paintComponent(g); public void paintComponent(Graphics g) {
super.paintComponent(g);
if (nameStyle == null) {
return; if (nameStyle == null) {
} return;
String text = "abcedfgh"; }
if (nameStyle instanceof NameStyle) { String text = "abcedfgh";
text = ((NameStyle) nameStyle).getName(); if (nameStyle instanceof NameStyle) {
} text = ((NameStyle) nameStyle).getName();
Style.paintBackground((Graphics2D) g, nameStyle, getWidth() - 1, getHeight() - 1); }
Style.paintContent((Graphics2D) g, text, nameStyle, getWidth() - 1, getHeight() - 1, ScreenResolution.getScreenResolution()); Style.paintBackground((Graphics2D) g, nameStyle, getWidth() - 1, getHeight() - 1);
Style.paintBorder((Graphics2D) g, nameStyle, getWidth() - 1, getHeight() - 1); Style.paintContent((Graphics2D) g, text, nameStyle, getWidth() - 1, getHeight() - 1, ScreenResolution.getScreenResolution());
} Style.paintBorder((Graphics2D) g, nameStyle, getWidth() - 1, getHeight() - 1);
}
};
styleList.setCellRenderer(render); };
this.setLayout(FRGUIPaneFactory.createBorderLayout()); styleList.setCellRenderer(render);
this.add(styleList, BorderLayout.CENTER); this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.add(styleList, BorderLayout.CENTER);
styleList.addMouseListener(new MouseAdapter() { this.setBorder(UIConstants.CELL_ATTR_NORMALBORDER);
@Override
public void mouseClicked(MouseEvent e) { styleList.addMouseListener(new MouseAdapter() {
int clickedNumber = e.getClickCount(); @Override
if (clickedNumber == 1) { public void mouseClicked(MouseEvent e) {
if (changeListener != null) { int clickedNumber = e.getClickCount();
changeListener.stateChanged(new ChangeEvent(styleList)); if (clickedNumber == 1) {
} if (changeListener != null) {
} changeListener.stateChanged(new ChangeEvent(styleList));
// 如果点击次数大于2认为发生双击,弹出编辑界面 }
// if (clickedNumber >= 2) { }
// } // 如果点击次数大于2认为发生双击,弹出编辑界面
} // if (clickedNumber >= 2) {
}); // }
}
DesignerContext.setDesignerBean("predefinedStyle", this); });
}
DesignerContext.setDesignerBean("predefinedStyle", this);
/** }
* 添加改变监听
* /**
* @param changeListener 监听事件 * 添加改变监听
*/ *
public void addChangeListener(ChangeListener changeListener) { * @param changeListener 监听事件
this.changeListener = changeListener; */
} public void addChangeListener(ChangeListener changeListener) {
this.changeListener = changeListener;
/** }
* 重置
*/ /**
public void reset() { * 重置
*/
} public void reset() {
@Override }
public void populateBean(NameStyle ob) {
refreshBeanElement(); @Override
for (int i = 0; i < defaultListModel.getSize(); i++) { public void populateBean(NameStyle ob) {
if (ComparatorUtils.equals(ob, defaultListModel.get(i))) { refreshBeanElement();
styleList.setSelectedIndex(i); for (int i = 0; i < defaultListModel.getSize(); i++) {
break; if (ComparatorUtils.equals(ob, defaultListModel.get(i))) {
} styleList.setSelectedIndex(i);
} break;
} }
}
@Override }
public NameStyle updateBean() {
return (NameStyle) styleList.getSelectedValue(); @Override
} public NameStyle updateBean() {
return (NameStyle) styleList.getSelectedValue();
/** }
* 获取面板标题
* /**
* @return 标题 * 获取面板标题
*/ *
public String title4PopupWindow() { * @return 标题
return Inter.getLocText(new String[]{"PageSetup-Predefined", "Style"}); */
} public String title4PopupWindow() {
return Inter.getLocText(new String[]{"PageSetup-Predefined", "Style"});
/** }
* 是否可以接纳对象
* /**
* @param ob 组件对象 * 是否可以接纳对象
* @return 是否可以接纳对象 *
*/ * @param ob 组件对象
public boolean accept(Object ob) { * @return 是否可以接纳对象
return ob instanceof NameStyle; */
} public boolean accept(Object ob) {
return ob instanceof NameStyle;
/** }
* 刷新组件对象
*/ /**
public void refreshBeanElement() { * 刷新组件对象
defaultListModel.removeAllElements(); */
if (ConfigManager.getProviderInstance().hasStyle()) { public void refreshBeanElement() {
Iterator iterato = ConfigManager.getProviderInstance().getStyleNameIterator(); defaultListModel.removeAllElements();
while (iterato.hasNext()) { if (ConfigManager.getProviderInstance().hasStyle()) {
String name = (String) iterato.next(); Iterator iterato = ConfigManager.getProviderInstance().getStyleNameIterator();
NameStyle nameStyle = NameStyle.getInstance(name); while (iterato.hasNext()) {
defaultListModel.addElement(nameStyle); String name = (String) iterato.next();
} NameStyle nameStyle = NameStyle.getInstance(name);
} defaultListModel.addElement(nameStyle);
styleList.setModel(defaultListModel); }
GUICoreUtils.repaint(this); }
styleList.setModel(defaultListModel);
} GUICoreUtils.repaint(this);
}
} }

222
designer/src/com/fr/design/present/PresentPane.java

@ -1,109 +1,115 @@
package com.fr.design.present; package com.fr.design.present;
import com.fr.base.present.DictPresent; import com.fr.base.present.DictPresent;
import com.fr.base.present.FormulaPresent; import com.fr.base.present.FormulaPresent;
import com.fr.base.present.Present; import com.fr.base.present.Present;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.fun.PresentKindProvider; import com.fr.design.constants.UIConstants;
import com.fr.design.gui.frpane.UIComboBoxPane; import com.fr.design.fun.PresentKindProvider;
import com.fr.design.gui.icombobox.DictionaryComboBox; import com.fr.design.gui.frpane.UIComboBoxPane;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.DictionaryComboBox;
import com.fr.general.Inter; import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.report.cell.cellattr.BarcodePresent; import com.fr.general.Inter;
import com.fr.report.cell.cellattr.CurrencyLinePresent; import com.fr.report.cell.cellattr.BarcodePresent;
import com.fr.report.cell.cellattr.CurrencyLinePresent;
import java.awt.event.ItemListener;
import java.util.ArrayList; import java.awt.event.ItemListener;
import java.util.List; import java.util.ArrayList;
import java.util.Set; import java.util.List;
import java.util.Set;
/**
* @author zhou /**
* @since 2012-5-31上午11:22:28 * @author zhou
*/ * @since 2012-5-31上午11:22:28
public class PresentPane extends UIComboBoxPane<Present> { */
private DictPresentPane dictPresentPane; public class PresentPane extends UIComboBoxPane<Present> {
private List<String> keys; private DictPresentPane dictPresentPane;
private List<String> displays; private List<String> keys;
private List<String> displays;
@Override
protected String title4PopupWindow() { @Override
return Inter.getLocText("FR-Designer_Present"); protected String title4PopupWindow() {
} return Inter.getLocText("FR-Designer_Present");
}
public void setSelectedByName(String radioName) {
jcb.setSelectedItem(radioName); public void setSelectedByName(String radioName) {
} jcb.setSelectedItem(radioName);
}
/**
* 增加tab改变监听事件 /**
* @param l 监听事件 * 增加tab改变监听事件
*/ * @param l 监听事件
public void addTabChangeListener(ItemListener l) { */
super.addTabChangeListener(l); public void addTabChangeListener(ItemListener l) {
dictPresentPane.addTabChangeListener(l); super.addTabChangeListener(l);
} dictPresentPane.addTabChangeListener(l);
}
@Override
public void populateBean(Present ob) { @Override
if(ob == null) { public void populateBean(Present ob) {
dictPresentPane.reset(); if(ob == null) {
} dictPresentPane.reset();
super.populateBean(ob); }
} super.populateBean(ob);
}
@Override
protected List<FurtherBasicBeanPane<? extends Present>> initPaneList() { @Override
if (keys == null) { protected List<FurtherBasicBeanPane<? extends Present>> initPaneList() {
keys = new ArrayList<>(); if (keys == null) {
} keys = new ArrayList<>();
if (displays == null) { }
displays = new ArrayList<>(); if (displays == null) {
} displays = new ArrayList<>();
List<FurtherBasicBeanPane<? extends Present>> paneList = new ArrayList<>(); }
FurtherBasicBeanPane<Present> none = new NonePresentPane(); List<FurtherBasicBeanPane<? extends Present>> paneList = new ArrayList<>();
paneList.add(none); FurtherBasicBeanPane<Present> none = new NonePresentPane();
keys.add("NOPRESENT"); paneList.add(none);
displays.add(none.title4PopupWindow()); keys.add("NOPRESENT");
displays.add(none.title4PopupWindow());
paneList.add(dictPresentPane = new DictPresentPane());
keys.add(DictPresent.class.getName()); dictPresentPane = new DictPresentPane();
displays.add(dictPresentPane.title4PopupWindow()); dictPresentPane.setBorder(UIConstants.CELL_ATTR_NORMALBORDER);
paneList.add(dictPresentPane);
FurtherBasicBeanPane<BarcodePresent> bar = new BarCodePane(); keys.add(DictPresent.class.getName());
paneList.add(bar); displays.add(dictPresentPane.title4PopupWindow());
keys.add(BarcodePresent.class.getName());
displays.add(bar.title4PopupWindow()); FurtherBasicBeanPane<BarcodePresent> bar = new BarCodePane();
bar.setBorder(UIConstants.CELL_ATTR_NORMALBORDER);
FurtherBasicBeanPane<FormulaPresent> formula = new FormulaPresentPane(); paneList.add(bar);
paneList.add(formula); keys.add(BarcodePresent.class.getName());
keys.add(FormulaPresent.class.getName()); displays.add(bar.title4PopupWindow());
displays.add(formula.title4PopupWindow());
FurtherBasicBeanPane<FormulaPresent> formula = new FormulaPresentPane();
FurtherBasicBeanPane<CurrencyLinePresent> currency = new CurrencyLinePane(); formula.setBorder(UIConstants.CELL_ATTR_NORMALBORDER);
paneList.add(currency); paneList.add(formula);
keys.add(CurrencyLinePresent.class.getName()); keys.add(FormulaPresent.class.getName());
displays.add(currency.title4PopupWindow()); displays.add(formula.title4PopupWindow());
Set<PresentKindProvider> providers = ExtraDesignClassManager.getInstance().getArray(PresentKindProvider.MARK_STRING); FurtherBasicBeanPane<CurrencyLinePresent> currency = new CurrencyLinePane();
for (PresentKindProvider provider : providers) { currency.setBorder(UIConstants.CELL_ATTR_NORMALBORDER);
FurtherBasicBeanPane<? extends Present> extra = provider.appearanceForPresent(); paneList.add(currency);
paneList.add(extra); keys.add(CurrencyLinePresent.class.getName());
keys.add(provider.kindOfPresent().getName()); displays.add(currency.title4PopupWindow());
displays.add(extra.title4PopupWindow());
} Set<PresentKindProvider> providers = ExtraDesignClassManager.getInstance().getArray(PresentKindProvider.MARK_STRING);
return paneList; for (PresentKindProvider provider : providers) {
} FurtherBasicBeanPane<? extends Present> extra = provider.appearanceForPresent();
paneList.add(extra);
@Override keys.add(provider.kindOfPresent().getName());
protected UIComboBox createComboBox() { displays.add(extra.title4PopupWindow());
return new DictionaryComboBox<>(keys.toArray(new String[keys.size()]), displays.toArray(new String[displays.size()])); }
} return paneList;
}
@Override
protected void addComboBoxItem(List<FurtherBasicBeanPane<? extends Present>> cards, int index) { @Override
// 初始化的时候已经加了,所以这里不用加了 protected UIComboBox createComboBox() {
} return new DictionaryComboBox<>(keys.toArray(new String[keys.size()]), displays.toArray(new String[displays.size()]));
}
@Override
protected void addComboBoxItem(List<FurtherBasicBeanPane<? extends Present>> cards, int index) {
// 初始化的时候已经加了,所以这里不用加了
}
} }

452
designer/src/com/fr/design/widget/CellWidgetCardPane.java

@ -1,222 +1,230 @@
package com.fr.design.widget; package com.fr.design.widget;
import com.fr.design.data.DataCreatorUI; import com.fr.design.data.DataCreatorUI;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.foldablepane.UIExpandablePane;
import com.fr.design.gui.frpane.TreeSettingPane; import com.fr.design.gui.frpane.TreeSettingPane;
import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.ibutton.UIHeadGroup;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.present.dict.DictionaryPane; import com.fr.design.present.dict.DictionaryPane;
import com.fr.design.widget.ui.BasicWidgetPropertySettingPane; import com.fr.design.widget.ui.BasicWidgetPropertySettingPane;
import com.fr.form.event.Listener; import com.fr.form.event.Listener;
import com.fr.form.ui.NoneWidget; import com.fr.form.ui.NoneWidget;
import com.fr.form.ui.Widget; import com.fr.form.ui.Widget;
import com.fr.general.Inter; import com.fr.general.Inter;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.util.ArrayList; import java.util.ArrayList;
/* /*
* carl :单独弄出来 * carl :单独弄出来
*/ */
public class CellWidgetCardPane extends BasicPane { public class CellWidgetCardPane extends BasicPane {
//当前的编辑器属性定义面板 //当前的编辑器属性定义面板
private DataModify<? extends Widget> currentEditorDefinePane; private DataModify<? extends Widget> currentEditorDefinePane;
//属性配置切换面板 //属性配置切换面板
private ArrayList<JPanel> paneList; private ArrayList<JPanel> paneList;
private JPanel center; private JPanel center;
private UIHeadGroup tabsHeaderIconPane; private UIHeadGroup tabsHeaderIconPane;
private CardLayout tabbedPane; private CardLayout tabbedPane;
private BasicWidgetPropertySettingPane widgetPropertyPane; private BasicWidgetPropertySettingPane widgetPropertyPane;
//通用属性容器 //通用属性容器
private JPanel attriTabPane; private JPanel attriTabPane;
private JPanel attriCardPane; private JPanel attriCardPane;
private CardLayout attriCardLayout; private CardLayout attriCardLayout;
//数字字典属性容器 //数字字典属性容器
private JPanel dictTabPane; private JPanel dictTabPane;
private JPanel dictCardPane; private JPanel dictCardPane;
private CardLayout dictCardLayout; private CardLayout dictCardLayout;
//构建树属性容器 //构建树属性容器
private JPanel treeTabPane; private JPanel treeTabPane;
//事件属性容器 //事件属性容器
private JPanel eventTabPane; private JPanel eventTabPane;
private WidgetEventPane eventPane; private WidgetEventPane eventPane;
private ElementCasePane pane; private ElementCasePane pane;
public CellWidgetCardPane(ElementCasePane pane) { public CellWidgetCardPane(ElementCasePane pane) {
this.pane = pane; this.pane = pane;
} // this.initComponents(pane);
}
private void initComponents(ElementCasePane pane) {
this.removeAll(); public BasicWidgetPropertySettingPane initBasicWidgetPropertyPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); return new BasicWidgetPropertySettingPane();
//k }
tabbedPane = new CardLayout();
center = new JPanel(tabbedPane);
this.add(center, BorderLayout.CENTER); private void initComponents(ElementCasePane pane) {
attriTabPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); this.removeAll();
eventTabPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); this.setLayout(FRGUIPaneFactory.createBorderLayout());
initPaneList(); //k
eventPane = new WidgetEventPane(pane); tabbedPane = new CardLayout();
eventTabPane.add(eventPane, BorderLayout.CENTER); center = new JPanel(tabbedPane);
//k this.add(center, BorderLayout.CENTER);
center.add(attriTabPane, Inter.getLocText("FR-Designer_Attribute"));
center.add(eventTabPane, Inter.getLocText("FR-Designer_Form_Editing_Listeners")); attriTabPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
final String [] tabTitles = new String[]{Inter.getLocText("FR-Designer_Attribute"), Inter.getLocText("FR-Designer_Form_Editing_Listeners")}; eventTabPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
initPaneList();
tabsHeaderIconPane = new UIHeadGroup(tabTitles) { eventPane = new WidgetEventPane(pane);
@Override eventTabPane.add(eventPane, BorderLayout.CENTER);
public void tabChanged(int index) { //k
tabbedPane.show(center, tabTitles[index]); center.add(attriTabPane, Inter.getLocText("FR-Designer_Attribute"));
} center.add(eventTabPane, Inter.getLocText("FR-Designer_Form_Editing_Listeners"));
}; final String[] tabTitles = new String[]{Inter.getLocText("FR-Designer_Attribute"), Inter.getLocText("FR-Designer_Form_Editing_Listeners")};
tabsHeaderIconPane.setNeedLeftRightOutLine(false);
this.add(tabsHeaderIconPane, BorderLayout.NORTH); tabsHeaderIconPane = new UIHeadGroup(tabTitles) {
@Override
//数据字典 public void tabChanged(int index) {
dictTabPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); tabbedPane.show(center, tabTitles[index]);
dictCardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); }
dictTabPane.add(dictCardPane, BorderLayout.CENTER); };
dictCardLayout = new CardLayout(); tabsHeaderIconPane.setNeedLeftRightOutLine(false);
dictCardPane.setLayout(dictCardLayout); this.add(tabsHeaderIconPane, BorderLayout.NORTH);
//构建树 //数据字典
treeTabPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); dictTabPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
dictCardPane = FRGUIPaneFactory.createCardLayout_S_Pane();
widgetPropertyPane = new BasicWidgetPropertySettingPane(); dictTabPane.add(dictCardPane, BorderLayout.CENTER);
dictCardLayout = new CardLayout();
UIExpandablePane uiExpandablePane = new UIExpandablePane("基本", 280, 20, widgetPropertyPane); dictCardPane.setLayout(dictCardLayout);
attriTabPane.add(uiExpandablePane, BorderLayout.NORTH); //构建树
treeTabPane = FRGUIPaneFactory.createBorderLayout_L_Pane();
attriCardPane = FRGUIPaneFactory.createCardLayout_S_Pane();
attriTabPane.add(attriCardPane, BorderLayout.CENTER); widgetPropertyPane = new BasicWidgetPropertySettingPane();
attriCardLayout = (CardLayout) attriCardPane.getLayout();
this.setPreferredSize(new Dimension(600, 450)); UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Basic"), 280, 24, widgetPropertyPane);
}
attriTabPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0));
private void initPaneList(){ attriTabPane.add(uiExpandablePane, BorderLayout.NORTH);
paneList = new ArrayList<JPanel>();
paneList.add(attriTabPane); attriCardPane = FRGUIPaneFactory.createCardLayout_S_Pane();
paneList.add(eventPane); attriTabPane.add(attriCardPane, BorderLayout.CENTER);
} attriCardLayout = (CardLayout) attriCardPane.getLayout();
this.setPreferredSize(new Dimension(600, 450));
@Override }
protected String title4PopupWindow() {
return "Widget"; private void initPaneList() {
} paneList = new ArrayList<JPanel>();
paneList.add(attriTabPane);
public void populate(Widget cellWidget) { paneList.add(eventPane);
initComponents(pane); }
// super.populate(cellWidget);
currentEditorDefinePane = null; @Override
protected String title4PopupWindow() {
if (cellWidget instanceof NoneWidget) { return "Widget";
// this.tabbedPane.setEnabled(false); }
} else {
// this.tabbedPane.setEnabled(true); public void populate(Widget cellWidget) {
} initComponents(pane);
// super.populate(cellWidget);
WidgetDefinePaneFactory.RN rn = WidgetDefinePaneFactory.createWidgetDefinePane(cellWidget, new Operator() { currentEditorDefinePane = null;
@Override
public void did(DataCreatorUI ui, String cardName) { if (cellWidget instanceof NoneWidget) {
if (ui == null) { // this.tabbedPane.setEnabled(false);
removeDictAttriPane(); } else {
removeTreeAttriPane(); // this.tabbedPane.setEnabled(true);
} }
if (ui instanceof DictionaryPane) {
removeDictAttriPane(); WidgetDefinePaneFactory.RN rn = WidgetDefinePaneFactory.createWidgetDefinePane(cellWidget, new Operator() {
removeTreeAttriPane(); @Override
showDictPane(ui, cardName); public void did(DataCreatorUI ui, String cardName) {
} else if (ui instanceof TreeSettingPane) { if (ui == null) {
removeDictAttriPane(); removeDictAttriPane();
removeTreeAttriPane(); removeTreeAttriPane();
showTreePane(ui); }
} if (ui instanceof DictionaryPane) {
} removeDictAttriPane();
}); removeTreeAttriPane();
DataModify<? extends Widget> definePane = rn.getDefinePane(); showDictPane(ui, cardName);
attriCardPane.add(definePane.toSwingComponent(), rn.getCardName()); } else if (ui instanceof TreeSettingPane) {
attriCardLayout.show(attriCardPane, rn.getCardName()); removeDictAttriPane();
currentEditorDefinePane = definePane; removeTreeAttriPane();
eventPane.populate(cellWidget); showTreePane(ui);
widgetPropertyPane.populate(cellWidget); }
tabsHeaderIconPane.setSelectedIndex(0); }
} });
DataModify<? extends Widget> definePane = rn.getDefinePane();
private void showDictPane(DataCreatorUI ui, String cardName) { attriCardPane.add(definePane.toSwingComponent(), rn.getCardName());
dictCardPane.removeAll(); attriCardLayout.show(attriCardPane, rn.getCardName());
dictCardPane.add(ui.toSwingComponent(), cardName); currentEditorDefinePane = definePane;
dictCardLayout.show(dictCardPane, cardName); eventPane.populate(cellWidget);
addDictAttriPane(); widgetPropertyPane.populate(cellWidget);
} tabsHeaderIconPane.setSelectedIndex(0);
}
private void showTreePane(DataCreatorUI ui) {
treeTabPane.removeAll(); private void showDictPane(DataCreatorUI ui, String cardName) {
treeTabPane.add(ui.toSwingComponent()); dictCardPane.removeAll();
addTreeAttriPane(); dictCardPane.add(ui.toSwingComponent(), cardName);
} dictCardLayout.show(dictCardPane, cardName);
addDictAttriPane();
public Widget update() { }
if (currentEditorDefinePane == null) {
return null; private void showTreePane(DataCreatorUI ui) {
} treeTabPane.removeAll();
Widget widget = currentEditorDefinePane.updateBean(); treeTabPane.add(ui.toSwingComponent());
if (widget == null) { addTreeAttriPane();
return null; }
}
widgetPropertyPane.update(widget); public Widget update() {
// super.update(widget); if (currentEditorDefinePane == null) {
return null;
Listener[] listener = eventPane == null ? new Listener[0] : eventPane.updateListeners(); }
widget.clearListeners(); Widget widget = currentEditorDefinePane.updateBean();
for (Listener l : listener) { if (widget == null) {
widget.addListener(l); return null;
} }
widgetPropertyPane.update(widget);
return widget; // super.update(widget);
}
Listener[] listener = eventPane == null ? new Listener[0] : eventPane.updateListeners();
widget.clearListeners();
@Override for (Listener l : listener) {
/** widget.addListener(l);
*检查 }
*/
public void checkValid() throws Exception { return widget;
currentEditorDefinePane.checkValid(); }
eventPane.checkValid();
}
@Override
/**
private void addDictAttriPane() { *检查
center.add(this.dictTabPane, Inter.getLocText("FR-Designer_DS_Dictionary")); */
reInitHeaderPane(this.dictTabPane); public void checkValid() throws Exception {
} currentEditorDefinePane.checkValid();
eventPane.checkValid();
private void addTreeAttriPane() { }
center.add(this.dictTabPane, Inter.getLocText("FR-Designer_Create_Tree"));
reInitHeaderPane(this.treeTabPane);
} private void addDictAttriPane() {
center.add(this.dictTabPane, Inter.getLocText("FR-Designer_DS_Dictionary"));
private void removeDictAttriPane() { reInitHeaderPane(this.dictTabPane);
center.remove(this.dictTabPane); }
}
private void addTreeAttriPane() {
private void removeTreeAttriPane() { center.add(this.dictTabPane, Inter.getLocText("FR-Designer_Create_Tree"));
center.remove(this.treeTabPane); reInitHeaderPane(this.treeTabPane);
} }
private void reInitHeaderPane(JPanel jPanel){ private void removeDictAttriPane() {
paneList.add(jPanel); center.remove(this.dictTabPane);
// tabsHeaderIconPane = new }
}
private void removeTreeAttriPane() {
} center.remove(this.treeTabPane);
}
private void reInitHeaderPane(JPanel jPanel) {
paneList.add(jPanel);
// tabsHeaderIconPane = new
}
}

559
designer/src/com/fr/design/widget/WidgetPane.java

@ -1,274 +1,287 @@
package com.fr.design.widget; package com.fr.design.widget;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.fun.WidgetDesignHandler; import com.fr.design.fun.WidgetDesignHandler;
import com.fr.design.gui.core.WidgetOption; import com.fr.design.gui.core.WidgetOption;
import com.fr.design.gui.frpane.AbstractAttrNoScrollPane; import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombobox.UIComboBoxRenderer; import com.fr.design.gui.icombobox.UIComboBoxRenderer;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.layout.TableLayout;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.CellWidgetPropertyPane; import com.fr.design.mainframe.CellWidgetPropertyPane;
import com.fr.design.widget.btn.ButtonConstants; import com.fr.design.mainframe.DesignerContext;
import com.fr.form.ui.Button; import com.fr.design.mainframe.ElementCasePane;
import com.fr.form.ui.*; import com.fr.design.widget.btn.ButtonConstants;
import com.fr.general.ComparatorUtils; import com.fr.form.ui.Button;
import com.fr.general.Inter; import com.fr.form.ui.*;
import com.fr.stable.ArrayUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import javax.swing.*; import com.fr.stable.ArrayUtils;
import java.awt.*;
import java.awt.event.ItemEvent; import javax.swing.*;
import java.awt.event.ItemListener; import java.awt.*;
import java.util.Vector; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/** import java.util.Vector;
* CellEditorDef Pane.
*/ /**
public class WidgetPane extends AbstractAttrNoScrollPane implements ItemListener { * CellEditorDef Pane.
*/
private EditorTypeComboBox editorTypeComboBox; public class WidgetPane extends AbstractAttrNoScrollPane implements ItemListener {
private CellWidgetCardPane cellEditorCardPane;
private boolean shouldFireSelectedEvent = true; private EditorTypeComboBox editorTypeComboBox;
protected JPanel northPane; private CellWidgetCardPane cellEditorCardPane;
private boolean shouldFireSelectedEvent = true;
public WidgetPane() { protected JPanel northPane;
this(null);
} public WidgetPane() {
this(null);
/** }
* Constructor
*/ /**
public WidgetPane(ElementCasePane pane) { * Constructor
this.initComponents(pane); */
} public WidgetPane(ElementCasePane pane) {
this.initComponents(pane);
protected void initComponents(ElementCasePane pane) { }
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); protected void initComponents(ElementCasePane pane) {
northPane = FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.add(northPane, BorderLayout.NORTH); this.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
northPane.add(new UILabel(Inter.getLocText("FR-Designer_Type") + ":")); editorTypeComboBox = new EditorTypeComboBox(pane != null);
editorTypeComboBox = new EditorTypeComboBox(pane != null); editorTypeComboBox.setPreferredSize(new Dimension(155, 30));
editorTypeComboBox.setPreferredSize(new Dimension(150, 30)); editorTypeComboBox.setMaximumRowCount(16);
editorTypeComboBox.setMaximumRowCount(16);
northPane.add(editorTypeComboBox); UILabel emptyLabel = new UILabel();
editorTypeComboBox.addItemListener(this); emptyLabel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
cellEditorCardPane = new CellWidgetCardPane(pane); double p = TableLayout.PREFERRED;
this.add(cellEditorCardPane, BorderLayout.CENTER); double f = TableLayout.FILL;
this.addAttributeChangeListener(listener); double[] columnSize = {p, p, f};
} double[] rowSize = {p};
Component[][] components = new Component[][]{
protected JPanel createContentPane(){ new Component[]{new UILabel(Inter.getLocText(new String[]{"FR-Designer_Selection", "FR-Designer_Widget"})), emptyLabel, editorTypeComboBox},
return new JPanel(); };
} northPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
northPane.setBorder(BorderFactory.createEmptyBorder(12, 10, 10, 15));
this.add(northPane, BorderLayout.NORTH);
AttributeChangeListener listener = new AttributeChangeListener() { editorTypeComboBox.addItemListener(this);
@Override
public void attributeChange() { cellEditorCardPane = new CellWidgetCardPane(pane);
CellWidgetPropertyPane.getInstance().update(); this.add(cellEditorCardPane, BorderLayout.CENTER);
DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); this.addAttributeChangeListener(listener);
} }
};
protected JPanel createContentPane() {
/** return new JPanel();
* 状态改变 }
*
* @param e 事件对象
*/ AttributeChangeListener listener = new AttributeChangeListener() {
public void itemStateChanged(ItemEvent e) { @Override
if (e.getStateChange() == ItemEvent.SELECTED) { public void attributeChange() {
Widget oldWidget = update(); CellWidgetPropertyPane.getInstance().update();
Widget selectedItem = editorTypeComboBox.getCellWidget(); DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified();
WidgetDesignHandler handler = ExtraDesignClassManager.getInstance().getSingle(WidgetDesignHandler.XML_TAG); }
if (handler != null) { };
handler.transferWidgetProperties(oldWidget, selectedItem);
} /**
if (e.getItem() instanceof Item && ((Item) e.getItem()).getValue() instanceof WidgetConfig) { * 状态改变
populate(selectedItem); *
return; * @param e 事件对象
} */
if (shouldFireSelectedEvent) { public void itemStateChanged(ItemEvent e) {
populateWidgetConfig(selectedItem); if (e.getStateChange() == ItemEvent.SELECTED) {
} Widget oldWidget = update();
} Widget selectedItem = editorTypeComboBox.getCellWidget();
} WidgetDesignHandler handler = ExtraDesignClassManager.getInstance().getSingle(WidgetDesignHandler.XML_TAG);
if (handler != null) {
@Override handler.transferWidgetProperties(oldWidget, selectedItem);
public String title4PopupWindow() { }
return Inter.getLocText("FR-Designer_Widget"); if (e.getItem() instanceof Item && ((Item) e.getItem()).getValue() instanceof WidgetConfig) {
} populate(selectedItem);
return;
public void populate(Widget widget) { }
if (widget == null) { if (shouldFireSelectedEvent) {
return; populateWidgetConfig(selectedItem);
} }
}
if (widget instanceof NameWidget) { }
String name = ((NameWidget) widget).getName();
shouldFireSelectedEvent = false; @Override
editorTypeComboBox.setSelectedItem(new Item(name, name)); public String title4PopupWindow() {
shouldFireSelectedEvent = true; return Inter.getLocText("FR-Designer_Widget");
cellEditorCardPane.populate(widget); }
return;
} public void populate(Widget widget) {
if (widget == null) {
Class clazz = widget.getClass(); return;
if (ArrayUtils.contains(ButtonConstants.CLASSES4BUTTON, clazz)) { }
clazz = Button.class;
} if (widget instanceof NameWidget) {
cellEditorCardPane.populate(widget); String name = ((NameWidget) widget).getName();
shouldFireSelectedEvent = false;
shouldFireSelectedEvent = false; editorTypeComboBox.setSelectedItem(new Item(name, name));
editorTypeComboBox.setSelectedItemByWidgetClass(clazz); shouldFireSelectedEvent = true;
shouldFireSelectedEvent = true; cellEditorCardPane.populate(widget);
return;
removeAttributeChangeListener(); }
initAllListeners();
this.addAttributeChangeListener(listener); Class clazz = widget.getClass();
if (ArrayUtils.contains(ButtonConstants.CLASSES4BUTTON, clazz)) {
} clazz = Button.class;
}
public Widget update() { cellEditorCardPane.populate(widget);
return cellEditorCardPane.update();
} shouldFireSelectedEvent = false;
editorTypeComboBox.setSelectedItemByWidgetClass(clazz);
protected void populateWidgetConfig(Widget widget) { shouldFireSelectedEvent = true;
this.populate(widget);
} removeAttributeChangeListener();
initAllListeners();
this.addAttributeChangeListener(listener);
private static class EditorTypeComboBox extends UIComboBox {
}
private Item item = new Item(Inter.getLocText("Widget-User_Defined"),
Inter.getLocText("Widget-User_Defined")); public Widget update() {
return cellEditorCardPane.update();
public EditorTypeComboBox(boolean userDefined) { }
this.setEditable(false);
this.setModel(new DefaultComboBoxModel(getWidgetsName(userDefined))); protected void populateWidgetConfig(Widget widget) {
this.setRenderer(new UIComboBoxRenderer() { this.populate(widget);
public Component getListCellRendererComponent(JList list, }
Object value, int index, boolean isSelected,
boolean cellHasFocus) {
if (value == item) { private static class EditorTypeComboBox extends UIComboBox {
UILabel label = new UILabel(Inter
.getLocText("Widget-User_Defined") private Item item = new Item(Inter.getLocText("Widget-User_Defined"),
+ " ————"); Inter.getLocText("Widget-User_Defined"));
label.setEnabled(false);
return label; public EditorTypeComboBox(boolean userDefined) {
} this.setEditable(false);
return super.getListCellRendererComponent(list, value, this.setModel(new DefaultComboBoxModel(getWidgetsName(userDefined)));
index, isSelected, cellHasFocus); this.setRenderer(new UIComboBoxRenderer() {
} public Component getListCellRendererComponent(JList list,
}); Object value, int index, boolean isSelected,
this.setPreferredSize(new Dimension(100, 20)); boolean cellHasFocus) {
} if (value == item) {
UILabel label = new UILabel(Inter
public void setSelectedItemByWidgetClass(Class clazz) { .getLocText("Widget-User_Defined")
WidgetOption[] options = getWidgetOptions(); + " ————");
for (int i = 0, l = this.getModel().getSize(); i < l; i++) { label.setEnabled(false);
Item item = (Item) this.getModel().getElementAt(i); return label;
if (item.getValue() instanceof Integer }
&& options[(Integer) item.getValue()].widgetClass() == clazz) { return super.getListCellRendererComponent(list, value,
this.setSelectedItem(item); index, isSelected, cellHasFocus);
} }
} });
} this.setPreferredSize(new Dimension(100, 20));
}
public void setSelectedItem(Object anObject) {
if (anObject == item) { public void setSelectedItemByWidgetClass(Class clazz) {
return; WidgetOption[] options = getWidgetOptions();
} for (int i = 0, l = this.getModel().getSize(); i < l; i++) {
super.setSelectedItem(anObject); Item item = (Item) this.getModel().getElementAt(i);
} if (item.getValue() instanceof Integer
&& options[(Integer) item.getValue()].widgetClass() == clazz) {
private Vector getWidgetsName(boolean userDefined) { this.setSelectedItem(item);
}
WidgetOption[] reportWidgetInstance = getWidgetOptions(); }
Vector<Item> items = new Vector<Item>(); }
for (int i = 0, l = reportWidgetInstance.length; i < l; i++) {
items.add(new Item(reportWidgetInstance[i].optionName(), i)); public void setSelectedItem(Object anObject) {
} if (anObject == item) {
WidgetManagerProvider manager = WidgetManager.getProviderInstance(); return;
java.util.Iterator<String> nameIt = manager.getWidgetConfigNameIterator(); }
if (userDefined && nameIt.hasNext()) { super.setSelectedItem(anObject);
items.add(item); }
while (nameIt.hasNext()) {
String name = nameIt.next(); private Vector getWidgetsName(boolean userDefined) {
items.add(new Item(name, name));
} WidgetOption[] reportWidgetInstance = getWidgetOptions();
} Vector<Item> items = new Vector<Item>();
for (int i = 0, l = reportWidgetInstance.length; i < l; i++) {
return items; items.add(new Item(reportWidgetInstance[i].optionName(), i));
} }
WidgetManagerProvider manager = WidgetManager.getProviderInstance();
public Widget getCellWidget() { java.util.Iterator<String> nameIt = manager.getWidgetConfigNameIterator();
Item item = (Item) this.getSelectedItem(); if (userDefined && nameIt.hasNext()) {
if (item.getValue() instanceof Integer) { items.add(item);
return getWidgetOptions()[(Integer) item.getValue()].createWidget(); while (nameIt.hasNext()) {
} else if (item.getValue() instanceof String) { String name = nameIt.next();
return new NameWidget((String) item.getValue()); items.add(new Item(name, name));
} }
return null; }
}
return items;
private WidgetOption[] getWidgetOptions() { }
return (WidgetOption[]) ArrayUtils.addAll(WidgetOption.getReportWidgetInstance(), ExtraDesignClassManager.getInstance().getCellWidgetOptions());
} public Widget getCellWidget() {
} Item item = (Item) this.getSelectedItem();
if (item.getValue() instanceof Integer) {
/** return getWidgetOptions()[(Integer) item.getValue()].createWidget();
* 校验 } else if (item.getValue() instanceof String) {
* return new NameWidget((String) item.getValue());
* @throws Exception 抛出异常 }
*/ return null;
public void checkValid() throws Exception { }
this.cellEditorCardPane.checkValid();
} private WidgetOption[] getWidgetOptions() {
return (WidgetOption[]) ArrayUtils.addAll(WidgetOption.getReportWidgetInstance(), ExtraDesignClassManager.getInstance().getCellWidgetOptions());
public static class Item { }
private String name; }
private Object value;
/**
* 校验
public Item(String name, Object value) { *
this.name = name; * @throws Exception 抛出异常
this.value = value; */
} public void checkValid() throws Exception {
this.cellEditorCardPane.checkValid();
public Object getValue() { }
return value;
} public static class Item {
private String name;
public String getName() { private Object value;
return name;
}
public Item(String name, Object value) {
/** this.name = name;
* 转化成字符串形式 this.value = value;
* }
* @return 返回字符串
*/ public Object getValue() {
public String toString() { return value;
return name; }
}
public String getName() {
@Override return name;
public boolean equals(Object o) { }
return o instanceof Item
&& ComparatorUtils.equals(((Item) o).value, value) /**
&& ComparatorUtils.equals(((Item) o).name, name); * 转化成字符串形式
} *
} * @return 返回字符串
public String getIconPath(){ */
return ""; public String toString() {
} return name;
}
@Override
public boolean equals(Object o) {
return o instanceof Item
&& ComparatorUtils.equals(((Item) o).value, value)
&& ComparatorUtils.equals(((Item) o).name, name);
}
}
public String getIconPath() {
return "";
}
} }

142
designer/src/com/fr/design/widget/ui/BasicWidgetPropertySettingPane.java

@ -1,70 +1,74 @@
package com.fr.design.widget.ui; package com.fr.design.widget.ui;
import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.constants.LayoutConstants;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.dialog.BasicPane; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.form.ui.NoneWidget; import com.fr.design.dialog.BasicPane;
import com.fr.form.ui.Widget; import com.fr.design.layout.TableLayout;
import com.fr.general.Inter; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.form.ui.NoneWidget;
import com.fr.form.ui.Widget;
import javax.swing.*; import com.fr.general.Inter;
import java.awt.*; import com.fr.design.utils.gui.GUICoreUtils;
public class BasicWidgetPropertySettingPane extends BasicPane { import javax.swing.*;
private ParameterTreeComboBox widgetNameComboBox; import java.awt.*;
private UICheckBox enableCheckBox;
private UICheckBox visibleCheckBox; public class BasicWidgetPropertySettingPane extends BasicPane {
private Widget widget; private ParameterTreeComboBox widgetNameComboBox;
private UICheckBox enableCheckBox;
public BasicWidgetPropertySettingPane() { private UICheckBox visibleCheckBox;
this.setLayout(FRGUIPaneFactory.createLabelFlowLayout()); private Widget widget;
JPanel pane1 = FRGUIPaneFactory.createBorderLayout_S_Pane();
pane1.setBorder(BorderFactory.createEmptyBorder(0, -2, 0, 0)); public BasicWidgetPropertySettingPane() {
this.add(pane1); this.setLayout(new BorderLayout());
enableCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Visible"), true);
JPanel pane2 = FRGUIPaneFactory.createMediumHGapFlowInnerContainer_M_Pane(); visibleCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Widget-Visible"), true);
enableCheckBox = new UICheckBox(Inter.getLocText("Enabled"), true); widgetNameComboBox = new ParameterTreeComboBox();
pane2.add(enableCheckBox); widgetNameComboBox.refreshTree();
visibleCheckBox = new UICheckBox(Inter.getLocText("Widget-Visible"), true); double f = TableLayout.FILL;
pane2.add(visibleCheckBox); double p = TableLayout.PREFERRED;
pane1.add(pane2, BorderLayout.NORTH); Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("FR-Designer_Form-Widget_Name") + " "), widgetNameComboBox},
JPanel pane3 = FRGUIPaneFactory.createMediumHGapFlowInnerContainer_M_Pane(); new Component[]{enableCheckBox, null},
widgetNameComboBox = new ParameterTreeComboBox(); new Component[]{visibleCheckBox, null},
widgetNameComboBox.refreshTree(); };
pane3.add(new UILabel(Inter.getLocText("Form-Widget_Name") + ":")); double[] rowSize = {p, p, p};
pane3.add(widgetNameComboBox); double[] columnSize = {p, f};
pane1.add(pane3, BorderLayout.CENTER); int[][] rowCount = {{1, 1},{1, 1},{1, 1},{1, 1}};
JPanel pane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_LARGE);
} pane.setBorder(BorderFactory.createEmptyBorder(10,0,10,0));
@Override this.add(pane, BorderLayout.CENTER);
protected String title4PopupWindow() {
return "property"; }
}
@Override
public void populate(Widget widget){ protected String title4PopupWindow() {
//:jackie return "property";
if(widget instanceof NoneWidget){ }
this.widget = null;
GUICoreUtils.setEnabled(this, false); public void populate(Widget widget){
return; //:jackie
} else{ if(widget instanceof NoneWidget){
GUICoreUtils.setEnabled(this, true); this.widget = null;
this.widget = widget; GUICoreUtils.setEnabled(this, false);
widgetNameComboBox.setSelectedItem(widget.getWidgetName()); return;
enableCheckBox.setSelected(this.widget.isEnabled()); } else{
visibleCheckBox.setSelected(this.widget.isVisible()); GUICoreUtils.setEnabled(this, true);
} this.widget = widget;
} widgetNameComboBox.setSelectedItem(widget.getWidgetName());
enableCheckBox.setSelected(this.widget.isEnabled());
public void update(Widget widget){ visibleCheckBox.setSelected(this.widget.isVisible());
if(this.widget == null) }
return ; }
widget.setWidgetName(widgetNameComboBox.getSelectedParameterName());
widget.setEnabled(enableCheckBox.isSelected()); public void update(Widget widget){
widget.setVisible(visibleCheckBox.isSelected()); if(this.widget == null)
} return ;
widget.setWidgetName(widgetNameComboBox.getSelectedParameterName());
widget.setEnabled(enableCheckBox.isSelected());
widget.setVisible(visibleCheckBox.isSelected());
}
} }

322
designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java

@ -1,164 +1,160 @@
package com.fr.design.widget.ui; package com.fr.design.widget.ui;
import java.awt.*; import com.fr.base.GraphHelper;
import java.awt.event.ItemEvent; import com.fr.design.constants.LayoutConstants;
import java.awt.event.ItemListener; import com.fr.design.foldablepane.UIExpandablePane;
import com.fr.design.gui.icheckbox.UICheckBox;
import javax.swing.*; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.base.GraphHelper; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.constants.LayoutConstants; import com.fr.design.layout.TableLayout;
import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.gui.ilable.UILabel; import com.fr.form.ui.FieldEditor;
import com.fr.general.Inter;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.*;
import javax.swing.event.DocumentEvent;
import com.fr.design.gui.icheckbox.UICheckBox; import javax.swing.event.DocumentListener;
import com.fr.design.gui.itextfield.UITextField; import java.awt.*;
import com.fr.design.layout.FRGUIPaneFactory; import java.awt.event.ItemEvent;
import com.fr.design.layout.TableLayout; import java.awt.event.ItemListener;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.form.ui.FieldEditor; public abstract class FieldEditorDefinePane<T extends FieldEditor> extends AbstractDataModify<T> {
import com.fr.general.Inter; private static final int ALLOW_BLANK_CHECK_BOX_WIDTH = GraphHelper.getLocTextWidth("FR-Designer_Allow_Null") + 30;
private static final int ALLOW_BLANK_CHECK_BOX_HEIGHT = 30;
public abstract class FieldEditorDefinePane<T extends FieldEditor> extends AbstractDataModify<T> { protected UICheckBox allowBlankCheckBox;
private static final int ALLOW_BLANK_CHECK_BOX_WIDTH = GraphHelper.getLocTextWidth("FR-Designer_Allow_Null") + 30; // richer:错误信息,是所有控件共有的属性,所以放到这里来
private static final int ALLOW_BLANK_CHECK_BOX_HEIGHT = 30; protected UITextField errorMsgTextField;
protected UICheckBox allowBlankCheckBox; protected JPanel validatePane;
// richer:错误信息,是所有控件共有的属性,所以放到这里来
protected UITextField errorMsgTextField; public FieldEditorDefinePane() {
protected JPanel validatePane; this.initComponents();
}
public FieldEditorDefinePane() {
this.initComponents(); protected void initComponents() {
} this.setLayout(FRGUIPaneFactory.createBorderLayout());
initErrorMsgPane();
protected void initComponents() { JPanel contentPane = this.setFirstContentPane();
this.setLayout(FRGUIPaneFactory.createBorderLayout()); if (contentPane != null) {
initErrorMsgPane(); UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 24, contentPane);
JPanel contentPane = this.setFirstContentPane(); this.add(uiExpandablePane, BorderLayout.NORTH);
if (contentPane != null) { }
UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 20, contentPane); this.addValidatePane();
this.add(uiExpandablePane, BorderLayout.NORTH); }
}
this.addValidatePane();
} protected void initErrorMsgPane() {
// 错误信息
errorMsgTextField = new UITextField(10);
protected void initErrorMsgPane() {
// 错误信息 // richer:主要为了方便查看比较长的错误信息
errorMsgTextField = new UITextField(10); errorMsgTextField.getDocument().addDocumentListener(new DocumentListener() {
// richer:主要为了方便查看比较长的错误信息 public void changedUpdate(DocumentEvent e) {
errorMsgTextField.getDocument().addDocumentListener(new DocumentListener() { errorMsgTextField.setToolTipText(errorMsgTextField.getText());
}
public void changedUpdate(DocumentEvent e) {
errorMsgTextField.setToolTipText(errorMsgTextField.getText()); public void insertUpdate(DocumentEvent e) {
} errorMsgTextField.setToolTipText(errorMsgTextField.getText());
}
public void insertUpdate(DocumentEvent e) {
errorMsgTextField.setToolTipText(errorMsgTextField.getText()); public void removeUpdate(DocumentEvent e) {
} errorMsgTextField.setToolTipText(errorMsgTextField.getText());
}
public void removeUpdate(DocumentEvent e) { });
errorMsgTextField.setToolTipText(errorMsgTextField.getText());
} }
});
@Override
} public void populateBean(T ob) {
this.allowBlankCheckBox.setSelected(ob.isAllowBlank());
@Override // errorMsgTextField.setEnabled(!allowBlankCheckBox.isSelected());
public void populateBean(T ob) { this.errorMsgTextField.setText(ob.getErrorMessage());
this.allowBlankCheckBox.setSelected(ob.isAllowBlank());
// errorMsgTextField.setEnabled(!allowBlankCheckBox.isSelected()); populateSubFieldEditorBean(ob);
this.errorMsgTextField.setText(ob.getErrorMessage()); }
populateSubFieldEditorBean(ob); protected abstract void populateSubFieldEditorBean(T ob);
}
@Override
protected abstract void populateSubFieldEditorBean(T ob); public T updateBean() {
T e = updateSubFieldEditorBean();
@Override
public T updateBean() { e.setAllowBlank(this.allowBlankCheckBox.isSelected());
T e = updateSubFieldEditorBean(); e.setErrorMessage(this.errorMsgTextField.getText());
e.setAllowBlank(this.allowBlankCheckBox.isSelected()); return e;
e.setErrorMessage(this.errorMsgTextField.getText()); }
return e; protected abstract T updateSubFieldEditorBean();
}
protected abstract JPanel setFirstContentPane();
protected abstract T updateSubFieldEditorBean();
protected abstract JPanel setFirstContentPane(); @Override
public void checkValid() throws Exception {
@Override }
public void checkValid() throws Exception {
protected void addValidatePane() {
} validatePane = FRGUIPaneFactory.createBorderLayout_S_Pane();
final UILabel uiLabel = new UILabel(Inter.getLocText(new String[]{"FR-Designer_Error", "FR-Designer_Tooltips"}));
protected void addValidatePane() { errorMsgTextField = new UITextField(10);
validatePane = FRGUIPaneFactory.createBorderLayout_S_Pane(); allowBlankCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Allow_Null"));
final UILabel uiLabel = new UILabel(Inter.getLocText(new String[]{"Error", "Tooltips"}) + ":"); allowBlankCheckBox.setBorder(BorderFactory.createEmptyBorder(5, 5, 0, 5));
errorMsgTextField = new UITextField(10); allowBlankCheckBox.setPreferredSize(new Dimension(ALLOW_BLANK_CHECK_BOX_WIDTH, ALLOW_BLANK_CHECK_BOX_HEIGHT));
allowBlankCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Allow_Null")); allowBlankCheckBox.addItemListener(new ItemListener() {
allowBlankCheckBox.setBorder(BorderFactory.createEmptyBorder(5, 5, 0, 5));
allowBlankCheckBox.setPreferredSize(new Dimension(ALLOW_BLANK_CHECK_BOX_WIDTH, ALLOW_BLANK_CHECK_BOX_HEIGHT)); @Override
allowBlankCheckBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) {
boolean isSelected = allowBlankCheckBox.isSelected();
@Override uiLabel.setVisible(!isSelected);
public void itemStateChanged(ItemEvent e) { errorMsgTextField.setVisible(!isSelected);
boolean isSelected = allowBlankCheckBox.isSelected(); if (isSelected) {
uiLabel.setVisible(!isSelected); uiLabel.setPreferredSize(new Dimension(0, 0));
errorMsgTextField.setVisible(!isSelected); errorMsgTextField.setPreferredSize(new Dimension(0, 0));
if(isSelected){ } else {
uiLabel.setPreferredSize(new Dimension(0, 0)); uiLabel.setPreferredSize(new Dimension(66, 20));
errorMsgTextField.setPreferredSize(new Dimension(0, 0)); errorMsgTextField.setPreferredSize(new Dimension(150, 20));
}else{ }
uiLabel.setPreferredSize(new Dimension(66, 20)); }
errorMsgTextField.setPreferredSize(new Dimension(150, 20)); });
}
}
}); double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
Component[][] components = new Component[][]{
double f = TableLayout.FILL; new Component[]{allowBlankCheckBox, null},
double p = TableLayout.PREFERRED; new Component[]{uiLabel, errorMsgTextField},
Component[][] components = new Component[][]{ };
new Component[]{allowBlankCheckBox, null }, double[] rowSize = {p, p};
new Component[]{uiLabel, errorMsgTextField}, double[] columnSize = {p, f};
}; int[][] rowCount = {{1, 1}, {1, 1}};
double[] rowSize = {p, p}; JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_SMALL, 1);
double[] columnSize = {p,f}; validatePane.add(panel, BorderLayout.NORTH);
int[][] rowCount = {{1, 1},{1, 1}};
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_SMALL, 1); JPanel contentPane = this.setValidatePane();
validatePane.add(panel, BorderLayout.NORTH); if (contentPane != null) {
validatePane.add(contentPane, BorderLayout.CENTER);
JPanel contentPane = this.setValidatePane(); }
if (contentPane != null) {
validatePane.add(contentPane, BorderLayout.CENTER);
} UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Validate"), 280, 24, validatePane);
this.add(uiExpandablePane, BorderLayout.CENTER);
UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Validate"), 280, 20, validatePane); // JPanel firstPane = GUICoreUtils.createFlowPane(new JComponent[]{allowBlankCheckBox}, FlowLayout.LEFT, 5);
this.add(uiExpandablePane, BorderLayout.CENTER); // validatePane.add(firstPane);
// JPanel secondPane = new JPanel(FRGUIPaneFactory.createLabelFlowLayout());
// JPanel firstPane = GUICoreUtils.createFlowPane(new JComponent[]{allowBlankCheckBox}, FlowLayout.LEFT, 5); // secondPane.add(new UILabel("错误提示" + ":"));
// validatePane.add(firstPane); // secondPane.add(errorMsgTextField);
// JPanel secondPane = new JPanel(FRGUIPaneFactory.createLabelFlowLayout()); // JPanel secondPane = GUICoreUtils.createFlowPane(new JComponent[]{new UILabel(Inter.getLocText(new String[]{"Error", "Tooltips"}) + ":"), errorMsgTextField}, FlowLayout.LEFT, 24);
// secondPane.add(new UILabel("错误提示" + ":")); // secondPane.setPreferredSize(new Dimension(400, 23));
// secondPane.add(errorMsgTextField); // validatePane.add(secondPane);
// JPanel secondPane = GUICoreUtils.createFlowPane(new JComponent[]{new UILabel(Inter.getLocText(new String[]{"Error", "Tooltips"}) + ":"), errorMsgTextField}, FlowLayout.LEFT, 24); }
// secondPane.setPreferredSize(new Dimension(400, 23));
// validatePane.add(secondPane); public JPanel setValidatePane() {
} return null;
}
public JPanel setValidatePane(){
return null;
}
} }

113
designer/src/com/fr/design/widget/ui/WaterMarkDictPane.java

@ -1,45 +1,70 @@
package com.fr.design.widget.ui; package com.fr.design.widget.ui;
import java.awt.event.KeyListener; import java.awt.*;
import java.awt.event.KeyListener;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.constants.LayoutConstants;
import javax.swing.*; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField; import javax.swing.*;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.form.ui.WaterMark; import com.fr.design.gui.itextfield.UITextField;
import com.fr.general.Inter; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout;
public class WaterMarkDictPane extends JPanel{ import com.fr.design.layout.TableLayoutHelper;
import com.fr.form.ui.WaterMark;
private UITextField waterMarkTextField; import com.fr.general.Inter;
public WaterMarkDictPane() { public class WaterMarkDictPane extends JPanel {
this.setLayout(FRGUIPaneFactory.createLabelFlowLayout());
this.setBorder(BorderFactory.createEmptyBorder(2,2,2,2)); private UITextField waterMarkTextField;
this.add(new UILabel(Inter.getLocText("WaterMark") + ":"));
waterMarkTextField = new UITextField(13); public WaterMarkDictPane() {
this.add(waterMarkTextField); this.setLayout(new BorderLayout());
}
// this.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
public void populate(WaterMark waterMark) { // this.add(new UILabel(Inter.getLocText("WaterMark") + ":"));
this.waterMarkTextField.setText(waterMark.getWaterMark()); waterMarkTextField = new UITextField(13);
}
public void addInputKeyListener(KeyListener kl) { UILabel emptyLabel = new UILabel();
this.waterMarkTextField.addKeyListener(kl); emptyLabel.setBorder(BorderFactory.createEmptyBorder(0, 33, 0, 0));
}
public void removeInputKeyListener(KeyListener kl) { double f = TableLayout.FILL;
this.waterMarkTextField.removeKeyListener(kl); double p = TableLayout.PREFERRED;
} Component[][] components = new Component[][]{
public void update(WaterMark waterMark) { new Component[]{new UILabel(Inter.getLocText("FR-Designer_WaterMark")), emptyLabel, waterMarkTextField},
waterMark.setWaterMark(this.waterMarkTextField.getText()); };
} double[] rowSize = {p};
public void setWaterMark(String waterMark) { double[] columnSize = {p, p, f};
this.waterMarkTextField.setText(waterMark); int[][] rowCount = {{1, 1}};
} JPanel panel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
public String getWaterMark() { // JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_MEDIUM);
return this.waterMarkTextField.getText(); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 5, 0));
} this.add(panel, BorderLayout.CENTER);
}
public void populate(WaterMark waterMark) {
this.waterMarkTextField.setText(waterMark.getWaterMark());
}
public void addInputKeyListener(KeyListener kl) {
this.waterMarkTextField.addKeyListener(kl);
}
public void removeInputKeyListener(KeyListener kl) {
this.waterMarkTextField.removeKeyListener(kl);
}
public void update(WaterMark waterMark) {
waterMark.setWaterMark(this.waterMarkTextField.getText());
}
public void setWaterMark(String waterMark) {
this.waterMarkTextField.setText(waterMark);
}
public String getWaterMark() {
return this.waterMarkTextField.getText();
}
} }

152
designer/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java

@ -1,77 +1,77 @@
package com.fr.quickeditor.floatquick; package com.fr.quickeditor.floatquick;
import com.fr.base.Style; import com.fr.base.Style;
import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
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.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.report.SelectImagePane; import com.fr.design.report.SelectImagePane;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.quickeditor.FloatQuickEditor; import com.fr.quickeditor.FloatQuickEditor;
import com.fr.report.cell.cellattr.CellImage; import com.fr.report.cell.cellattr.CellImage;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
public class FloatImageQuickEditor extends FloatQuickEditor { public class FloatImageQuickEditor extends FloatQuickEditor {
public FloatImageQuickEditor() { public FloatImageQuickEditor() {
super(); super();
UIButton editbutton = new UIButton(Inter.getLocText("FR-Designer_Edit")); UIButton editbutton = new UIButton(Inter.getLocText("FR-Designer_Edit"));
editbutton.addActionListener(new ActionListener() { editbutton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
showEditingDialog(); showEditingDialog();
} }
}); });
editbutton.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); editbutton.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0));
editbutton.setMargin(null); editbutton.setMargin(null);
editbutton.setOpaque(false); editbutton.setOpaque(false);
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{editbutton} new Component[]{editbutton}
}; };
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
double[] columnSize = {f}; double[] columnSize = {f};
double[] rowSize = {p}; double[] rowSize = {p};
JPanel pane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); JPanel pane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(10, 74, 10, 10)); this.setBorder(BorderFactory.createEmptyBorder(10, 78, 10, 17));
this.add(pane, BorderLayout.CENTER); this.add(pane, BorderLayout.CENTER);
} }
private void showEditingDialog() { private void showEditingDialog() {
final SelectImagePane imageEditorPane = new SelectImagePane(); final SelectImagePane imageEditorPane = new SelectImagePane();
imageEditorPane.populate(floatElement); imageEditorPane.populate(floatElement);
final Object oldValue = floatElement.getValue(); final Object oldValue = floatElement.getValue();
final Style oldStyle = floatElement.getStyle(); final Style oldStyle = floatElement.getStyle();
imageEditorPane.showWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { imageEditorPane.showWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() {
@Override @Override
public void doOk() { public void doOk() {
CellImage cellImage = imageEditorPane.update(); CellImage cellImage = imageEditorPane.update();
if (!ComparatorUtils.equals(cellImage.getImage(), oldValue) || !ComparatorUtils.equals(cellImage.getStyle(), oldStyle)) { if (!ComparatorUtils.equals(cellImage.getImage(), oldValue) || !ComparatorUtils.equals(cellImage.getStyle(), oldStyle)) {
floatElement.setValue(cellImage.getImage()); floatElement.setValue(cellImage.getImage());
floatElement.setStyle(cellImage.getStyle()); floatElement.setStyle(cellImage.getStyle());
fireTargetModified(); fireTargetModified();
} }
} }
}).setVisible(true); }).setVisible(true);
} }
@Override @Override
protected void refreshDetails() { protected void refreshDetails() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
} }

253
designer/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java

@ -1,127 +1,128 @@
package com.fr.quickeditor.floatquick; package com.fr.quickeditor.floatquick;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.base.Formula; import com.fr.base.Formula;
import com.fr.base.Style; import com.fr.base.Style;
import com.fr.base.TextFormat; import com.fr.base.TextFormat;
import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.quickeditor.FloatQuickEditor; import com.fr.quickeditor.FloatQuickEditor;
import com.fr.report.ReportHelper; import com.fr.report.ReportHelper;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.*; import javax.swing.*;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
public class FloatStringQuickEditor extends FloatQuickEditor { public class FloatStringQuickEditor extends FloatQuickEditor {
private JTextArea stringTextField; private JTextArea stringTextField;
private UIButton formulaButton; private UIButton formulaButton;
// august:如果是原来编辑的是公式,要保留公式里的这些属性,不然在公式和字符串转化时,就会丢失这些属性设置 // august:如果是原来编辑的是公式,要保留公式里的这些属性,不然在公式和字符串转化时,就会丢失这些属性设置
private boolean reserveInResult = false; private boolean reserveInResult = false;
private boolean reserveOnWriteOrAnaly = true; private boolean reserveOnWriteOrAnaly = true;
public FloatStringQuickEditor() { public FloatStringQuickEditor() {
super(); super();
stringTextField = new JTextArea(); stringTextField = new JTextArea();
initTextField(); initTextField();
formulaButton = new UIButton(); formulaButton = new UIButton();
formulaButton.setPreferredSize(new Dimension(25, 23)); formulaButton.setPreferredSize(new Dimension(25, 23));
formulaButton.setIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png")); formulaButton.setIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png"));
formulaButton.addActionListener(getFormulaActionListener); formulaButton.addActionListener(getFormulaActionListener);
JPanel pane = new JPanel(new BorderLayout(5, 0)); JPanel pane = new JPanel(new BorderLayout(5, 0));
pane.add(stringTextField, BorderLayout.CENTER); pane.add(stringTextField, BorderLayout.CENTER);
pane.add(formulaButton, BorderLayout.EAST); pane.add(formulaButton, BorderLayout.EAST);
formulaButton.setVisible(false); pane.setBorder(BorderFactory.createEmptyBorder(0,0,0,7));
this.setLayout(new BorderLayout()); formulaButton.setVisible(false);
this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); this.setLayout(new BorderLayout());
this.add(pane, BorderLayout.NORTH); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
} this.add(pane, BorderLayout.NORTH);
}
private void initTextField() {
stringTextField.setFont(new Font("Dialog", Font.PLAIN, 12)); private void initTextField() {
stringTextField.setOpaque(true); stringTextField.setFont(new Font("Dialog", Font.PLAIN, 12));
stringTextField.setLineWrap(true); stringTextField.setOpaque(true);
stringTextField.setWrapStyleWord(true); stringTextField.setLineWrap(true);
stringTextField.setMargin(new Insets(5, 5, 5, 5)); stringTextField.setWrapStyleWord(true);
stringTextField.setBorder(BorderFactory.createLineBorder(Color.gray)); stringTextField.setMargin(new Insets(5, 5, 5, 5));
stringTextField.setBackground(Color.WHITE); stringTextField.setBorder(BorderFactory.createLineBorder(Color.gray));
} stringTextField.setBackground(Color.WHITE);
}
ActionListener getFormulaActionListener = new ActionListener() {
@Override ActionListener getFormulaActionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) { @Override
((ElementCasePane) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentElementCasePane()).getGrid().startEditing(); public void actionPerformed(ActionEvent e) {
} ((ElementCasePane) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentElementCasePane()).getGrid().startEditing();
}; }
};
@Override
protected void refreshDetails() { @Override
String str = null; protected void refreshDetails() {
Object value = floatElement.getValue(); String str = null;
if (value == null) { Object value = floatElement.getValue();
str = StringUtils.EMPTY; if (value == null) {
} else if (value instanceof Formula) { str = StringUtils.EMPTY;
//MoMeak: 没拆文本框和公式所以需要这么个玩意 } else if (value instanceof Formula) {
formulaButton.setVisible(true); //MoMeak: 没拆文本框和公式所以需要这么个玩意
Formula formula = (Formula) value; formulaButton.setVisible(true);
str = formula.getContent(); Formula formula = (Formula) value;
stringTextField.setLineWrap(false); str = formula.getContent();
this.setBorder(BorderFactory.createEmptyBorder(10, 74, 10, 10)); stringTextField.setLineWrap(false);
reserveInResult = formula.isReserveInResult(); this.setBorder(BorderFactory.createEmptyBorder(10, 78, 10, 10));
reserveOnWriteOrAnaly = formula.isReserveOnWriteOrAnaly(); reserveInResult = formula.isReserveInResult();
} else { reserveOnWriteOrAnaly = formula.isReserveOnWriteOrAnaly();
str = value.toString(); } else {
} str = value.toString();
showText(str); }
} showText(str);
}
public void showText(String str) {
stringTextField.getDocument().removeDocumentListener(documentListener); public void showText(String str) {
stringTextField.setText(str); stringTextField.getDocument().removeDocumentListener(documentListener);
stringTextField.getDocument().addDocumentListener(documentListener); stringTextField.setText(str);
} stringTextField.getDocument().addDocumentListener(documentListener);
}
DocumentListener documentListener = new DocumentListener() {
DocumentListener documentListener = new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) { @Override
changeReportPaneCell(stringTextField.getText().trim()); public void insertUpdate(DocumentEvent e) {
} changeReportPaneCell(stringTextField.getText().trim());
}
@Override
public void removeUpdate(DocumentEvent e) { @Override
changeReportPaneCell(stringTextField.getText().trim()); public void removeUpdate(DocumentEvent e) {
} changeReportPaneCell(stringTextField.getText().trim());
}
@Override
public void changedUpdate(DocumentEvent e) { @Override
changeReportPaneCell(stringTextField.getText().trim()); public void changedUpdate(DocumentEvent e) {
} changeReportPaneCell(stringTextField.getText().trim());
}
};
};
protected void changeReportPaneCell(String tmpText) {
if (tmpText != null && (tmpText.length() > 0 && tmpText.charAt(0) == '=')) { protected void changeReportPaneCell(String tmpText) {
Formula textFormula = new Formula(tmpText); if (tmpText != null && (tmpText.length() > 0 && tmpText.charAt(0) == '=')) {
textFormula.setReserveInResult(reserveInResult); Formula textFormula = new Formula(tmpText);
textFormula.setReserveOnWriteOrAnaly(reserveOnWriteOrAnaly); textFormula.setReserveInResult(reserveInResult);
floatElement.setValue(textFormula); textFormula.setReserveOnWriteOrAnaly(reserveOnWriteOrAnaly);
} else { floatElement.setValue(textFormula);
Style style = floatElement.getStyle(); } else {
if (floatElement != null && style != null && style.getFormat() != null && style.getFormat() == TextFormat.getInstance()) { Style style = floatElement.getStyle();
floatElement.setValue(tmpText); if (floatElement != null && style != null && style.getFormat() != null && style.getFormat() == TextFormat.getInstance()) {
} else { floatElement.setValue(tmpText);
floatElement.setValue(ReportHelper.convertGeneralStringAccordingToExcel(tmpText)); } else {
} floatElement.setValue(ReportHelper.convertGeneralStringAccordingToExcel(tmpText));
} }
fireTargetModified(); }
stringTextField.requestFocus(); fireTargetModified();
} stringTextField.requestFocus();
}
} }

372
designer_base/src/com/fr/design/constants/UIConstants.java

@ -1,184 +1,190 @@
/* /*
* Copyright(c) 2001-2010, FineReport Inc, All Rights Reserved. * Copyright(c) 2001-2010, FineReport Inc, All Rights Reserved.
*/ */
package com.fr.design.constants; package com.fr.design.constants;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import javax.swing.border.Border;
import java.awt.image.BufferedImage; import java.awt.*;
import java.awt.image.BufferedImage;
/**
* This class defines the constants used in the designer. /**
*/ * This class defines the constants used in the designer.
public interface UIConstants { */
public interface UIConstants {
public static final Icon BLACK_ICON = BaseUtils.readIcon("/com/fr/base/images/cell/blank.gif");
public static final Icon BLACK_ICON = BaseUtils.readIcon("/com/fr/base/images/cell/blank.gif");
public static final Border CELL_ATTR_EMPTYBORDER = BorderFactory.createEmptyBorder(0 ,10, 0, 0);
public static final int SIZE = 17; public static final Border CELL_ATTR_NORMALBORDER = BorderFactory.createEmptyBorder(0 ,10, 0, 15);
public static final int GAP_NORMAL = 10; // 10px
public static final int SIZE = 17;
/**
* Cell default cursor. public static final int GAP_NORMAL = 10; // 10px
*/
public static final Cursor CELL_DEFAULT_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor( /**
BaseUtils.readImage("/com/fr/base/images/cell/cursor/cell_default.png"), * Cell default cursor.
new Point(16, 16), "CellDefaultCursor"); */
public static final Cursor DRAW_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor( public static final Cursor CELL_DEFAULT_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor(
BaseUtils.readImage("/com/fr/base/images/cell/cursor/cursor_draw.png"), BaseUtils.readImage("/com/fr/base/images/cell/cursor/cell_default.png"),
new Point(16, 16), "DrawCursor"); new Point(16, 16), "CellDefaultCursor");
public static final Cursor DRAW_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor(
BaseUtils.readImage("/com/fr/base/images/cell/cursor/cursor_draw.png"),
public static final Cursor FORMAT_BRUSH_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor( new Point(16, 16), "DrawCursor");
BaseUtils.readImage("/com/fr/base/images/cell/cursor/brush_cursor0.png"),
new Point(16, 16), "formatBrushCursor");
public static final Cursor FORMAT_BRUSH_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor(
/** BaseUtils.readImage("/com/fr/base/images/cell/cursor/brush_cursor0.png"),
* Border style array. new Point(16, 16), "formatBrushCursor");
*/
public final static int[] BORDER_LINE_STYLE_ARRAY = new int[]{ /**
Constants.LINE_THIN, //Thin border. * Border style array.
Constants.LINE_MEDIUM, //Medium border */
Constants.LINE_DASH, //dash border public final static int[] BORDER_LINE_STYLE_ARRAY = new int[]{
Constants.LINE_HAIR, //hair-line border Constants.LINE_THIN, //Thin border.
Constants.LINE_HAIR2, //hair-line border Constants.LINE_MEDIUM, //Medium border
Constants.LINE_THICK, //Thick border Constants.LINE_DASH, //dash border
Constants.LINE_DOUBLE, //double-line border Constants.LINE_HAIR, //hair-line border
Constants.LINE_DOT, //dot border Constants.LINE_HAIR2, //hair-line border
Constants.LINE_MEDIUM_DASH, //Medium dashed border Constants.LINE_THICK, //Thick border
Constants.LINE_DASH_DOT, //dash-dot border Constants.LINE_DOUBLE, //double-line border
Constants.LINE_MEDIUM_DASH_DOT, //medium dash-dot border Constants.LINE_DOT, //dot border
Constants.LINE_DASH_DOT_DOT, //dash-dot-dot border Constants.LINE_MEDIUM_DASH, //Medium dashed border
Constants.LINE_MEDIUM_DASH_DOT_DOT, //medium dash-dot-dot border Constants.LINE_DASH_DOT, //dash-dot border
Constants.LINE_SLANTED_DASH_DOT, //slanted dash-dot border Constants.LINE_MEDIUM_DASH_DOT, //medium dash-dot border
}; Constants.LINE_DASH_DOT_DOT, //dash-dot-dot border
public static final Color LINE_COLOR = new Color(153, 153, 153); Constants.LINE_MEDIUM_DASH_DOT_DOT, //medium dash-dot-dot border
public static final Color FONT_COLOR = new Color(51, 51, 51); Constants.LINE_SLANTED_DASH_DOT, //slanted dash-dot border
public static final Color LIGHT_BLUE = new Color(182, 217, 253); };
public static final Color SKY_BLUE = new Color(164, 192, 220); public static final Color LINE_COLOR = new Color(153, 153, 153);
public static final Color OCEAN_BLUE = new Color(141, 179, 217); public static final Color FONT_COLOR = new Color(51, 51, 51);
public static final Color DARK_BLUE = new Color(0, 88, 144); public static final Color LIGHT_BLUE = new Color(182, 217, 253);
public static final Color NORMAL_BACKGROUND = new Color(212, 212, 216); public static final Color SKY_BLUE = new Color(164, 192, 220);
public static final Color TREE_BACKGROUND = new Color(240, 240, 243); public static final Color OCEAN_BLUE = new Color(141, 179, 217);
public static final Color TOOL_PANE_BACKGROUND = new Color(232, 232, 223); public static final Color DARK_BLUE = new Color(0, 88, 144);
public static final Color SELECT_TAB = new Color(245, 245, 247); public static final Color NORMAL_BACKGROUND = new Color(212, 212, 216);
public static final Color TOOLBARUI_BACKGROUND = new Color(255, 255, 255); public static final Color TREE_BACKGROUND = new Color(240, 240, 243);
public static final Color SHADOW_GREY = new Color(217, 218, 221); public static final Color TOOL_PANE_BACKGROUND = new Color(232, 232, 223);
public static final Color SHADOW_CENTER = new Color(200, 200, 200); public static final Color SELECT_TAB = new Color(245, 245, 247);
public static final Color SHADOW_PURPLE = new Color(255, 0, 255); public static final Color TOOLBARUI_BACKGROUND = new Color(255, 255, 255);
public static final Color FLESH_BLUE = new Color(65, 155, 249); public static final Color SHADOW_GREY = new Color(217, 218, 221);
public static final Color HOVER_BLUE = new Color(0xd2d2d2); public static final Color SHADOW_CENTER = new Color(200, 200, 200);
public static final Color DOTTED_LINE_COLOR = new Color(35, 108, 184); public static final Color SHADOW_PURPLE = new Color(255, 0, 255);
public static final Color AUTHORITY_COLOR = new Color(88, 125, 153); public static final Color FLESH_BLUE = new Color(65, 155, 249);
public static final Color AUTHORITY_BLUE = new Color(0xe2e2e2); public static final Color HOVER_BLUE = new Color(0xd2d2d2);
public static final Color AUTHORITY_DARK_BLUE = new Color(136, 164, 186); public static final Color DOTTED_LINE_COLOR = new Color(35, 108, 184);
public static final Color AUTHORITY_PRESS_BLUE = new Color(131, 159, 181); public static final Color AUTHORITY_COLOR = new Color(88, 125, 153);
public static final Color AUTHORITY_LINE_COLOR = new Color(0, 124, 229); public static final Color AUTHORITY_BLUE = new Color(0xe2e2e2);
public static final Color AUTHORITY_SHEET_DARK = new Color(86, 120, 143); public static final Color AUTHORITY_DARK_BLUE = new Color(136, 164, 186);
public static final Color AUTHORITY_SHEET_LIGHT = new Color(156, 204, 238); public static final Color AUTHORITY_PRESS_BLUE = new Color(131, 159, 181);
public static final Color AUTHORITY_SHEET_UNSELECTED = new Color(146, 192, 225); public static final Color AUTHORITY_LINE_COLOR = new Color(0, 124, 229);
public static final Color ATTRIBUTE_PRESS = new Color(0xD8F2FD); public static final Color AUTHORITY_SHEET_DARK = new Color(86, 120, 143);
public static final Color ATTRIBUTE_NORMAL = new Color(0xDADADD); public static final Color AUTHORITY_SHEET_LIGHT = new Color(156, 204, 238);
public static final Color ATTRIBUTE_HOVER = new Color(0xC9C9CD); public static final Color AUTHORITY_SHEET_UNSELECTED = new Color(146, 192, 225);
public static final Color CHECKBOX_HOVER_SELECTED = new Color(0x3394f0); public static final Color ATTRIBUTE_PRESS = new Color(0xD8F2FD);
public static final Color TEXT_FILED_BORDER_SELECTED = new Color(0x3384f0); public static final Color ATTRIBUTE_NORMAL = new Color(0xDADADD);
public static final Color SHEET_NORMAL = new Color(0xc8c8ca); public static final Color ATTRIBUTE_HOVER = new Color(0xC9C9CD);
public static final Color SELECTED_BACKGROUND = new Color(0xdeedfe); public static final Color CHECKBOX_HOVER_SELECTED = new Color(0x3394f0);
public static final Color SELECTED_BORDER_LINE_COLOR = new Color(0x3384f0); public static final Color TEXT_FILED_BORDER_SELECTED = new Color(0x3384f0);
public static final Color DEFAULT_BG_RULER = new Color(0xffffff); public static final Color SHEET_NORMAL = new Color(0xc8c8ca);
public static final Color RULER_LINE_COLOR = new Color(0xababab); public static final Color SELECTED_BACKGROUND = new Color(0xdeedfe);
public static final Color RULER_SCALE_COLOR = new Color(0x4e504f); public static final Color SELECTED_BORDER_LINE_COLOR = new Color(0x3384f0);
public static final Color PROPERTY_PANE_BACKGROUND = new Color(0xdadadd); public static final Color DEFAULT_BG_RULER = new Color(0xffffff);
public static final Color SPLIT_LINE = new Color(201, 198, 184); public static final Color RULER_LINE_COLOR = new Color(0xababab);
public static final Color RULER_SCALE_COLOR = new Color(0x4e504f);
public static final Color PROPERTY_PANE_BACKGROUND = new Color(0xdadadd);
public static final BufferedImage DRAG_BAR = BaseUtils.readImage("com/fr/design/images/control/bar.png"); public static final Color SPLIT_LINE = new Color(201, 198, 184);
public static final BufferedImage DRAG_BAR_RIGHT = BaseUtils.readImage("com/fr/design/images/control/barm.png");
public static final BufferedImage DRAG_BAR_LEFT = BaseUtils.readImage("com/fr/design/images/control/barl.png");
public static final BufferedImage DRAG_UP_NORMAL = BaseUtils.readImage("com/fr/design/images/control/upnor.png"); public static final BufferedImage DRAG_BAR = BaseUtils.readImage("com/fr/design/images/control/bar.png");
public static final BufferedImage DRAG_UP_PRESS = BaseUtils.readImage("com/fr/design/images/control/uppre.png"); public static final BufferedImage DRAG_BAR_RIGHT = BaseUtils.readImage("com/fr/design/images/control/barm.png");
public static final BufferedImage DRAG_DOWN_NORMAL = BaseUtils.readImage("com/fr/design/images/control/downnor.png"); public static final BufferedImage DRAG_BAR_LEFT = BaseUtils.readImage("com/fr/design/images/control/barl.png");
public static final BufferedImage DRAG_DOWN_PRESS = BaseUtils.readImage("com/fr/design/images/control/downpre.png"); public static final BufferedImage DRAG_UP_NORMAL = BaseUtils.readImage("com/fr/design/images/control/upnor.png");
public static final BufferedImage DRAG_RIGHT_NORMAL = BaseUtils.readImage("com/fr/design/images/control/rightnor.png"); public static final BufferedImage DRAG_UP_PRESS = BaseUtils.readImage("com/fr/design/images/control/uppre.png");
public static final BufferedImage DRAG_RIGHT_PRESS = BaseUtils.readImage("com/fr/design/images/control/rightpre.png"); public static final BufferedImage DRAG_DOWN_NORMAL = BaseUtils.readImage("com/fr/design/images/control/downnor.png");
public static final BufferedImage DRAG_LEFT_NORMAL = BaseUtils.readImage("com/fr/design/images/control/leftnor.png"); public static final BufferedImage DRAG_DOWN_PRESS = BaseUtils.readImage("com/fr/design/images/control/downpre.png");
public static final BufferedImage DRAG_LEFT_PRESS = BaseUtils.readImage("com/fr/design/images/control/leftpre.png"); public static final BufferedImage DRAG_RIGHT_NORMAL = BaseUtils.readImage("com/fr/design/images/control/rightnor.png");
public static final BufferedImage DRAG_DOT = BaseUtils.readImage("com/fr/design/images/control/dot.png"); public static final BufferedImage DRAG_RIGHT_PRESS = BaseUtils.readImage("com/fr/design/images/control/rightpre.png");
public static final BufferedImage DRAG_DOT_VERTICAL = BaseUtils.readImage("com/fr/design/images/control/dotv.png"); public static final BufferedImage DRAG_LEFT_NORMAL = BaseUtils.readImage("com/fr/design/images/control/leftnor.png");
public static final BufferedImage POP_BUTTON_DOWN = BaseUtils.readImage("com/fr/design/images/buttonicon/popdownarrow.png"); public static final BufferedImage DRAG_LEFT_PRESS = BaseUtils.readImage("com/fr/design/images/control/leftpre.png");
public static final BufferedImage POP_BUTTON_UP = BaseUtils.readImage("com/fr/design/images/buttonicon/popuparrow.png"); public static final BufferedImage DRAG_DOT = BaseUtils.readImage("com/fr/design/images/control/dot.png");
public static final int MODEL_NORMAL = 0; public static final BufferedImage DRAG_DOT_VERTICAL = BaseUtils.readImage("com/fr/design/images/control/dotv.png");
public static final int MODEL_PRESS = 1; public static final BufferedImage POP_BUTTON_DOWN = BaseUtils.readImage("com/fr/design/images/buttonicon/popdownarrow.png");
public static final Icon ARROW_DOWN_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowdown.png"); public static final BufferedImage POP_BUTTON_UP = BaseUtils.readImage("com/fr/design/images/buttonicon/popuparrow.png");
public static final Icon ARROW_UP_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowup.png"); public static final BufferedImage DRAG_DOWN_SELECTED_SMALL = BaseUtils.readImage("com/fr/design/images/buttonicon/downSelected.png");
public static final Icon YES_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/yes.png"); public static final BufferedImage DRAG_LEFT_NORMAL_SMALL = BaseUtils.readImage("com/fr/design/images/buttonicon/leftNormal.png");
public static final Icon CHOOSEN_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/select_item.png"); public static final int MODEL_NORMAL = 0;
public static final Icon PRE_WIDGET_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/prewidget.png"); public static final int MODEL_PRESS = 1;
public static final Icon EDIT_NORMAL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/editn.png"); public static final Icon ARROW_DOWN_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowdown.png");
public static final Icon EDIT_PRESSED_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/editp.png"); public static final Icon ARROW_UP_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowup.png");
public static final Icon HIDE_NORMAL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/hiden.png"); public static final Icon YES_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/yes.png");
public static final Icon HIDE_PRESSED_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/hidep.png"); public static final Icon CHOOSEN_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/select_item.png");
public static final Icon VIEW_NORMAL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/viewn.png"); public static final Icon PRE_WIDGET_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/prewidget.png");
public static final Icon VIEW_PRESSED_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/viewp.png"); public static final Icon EDIT_NORMAL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/editn.png");
public static final Icon RUN_BIG_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/run24.png"); public static final Icon EDIT_PRESSED_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/editp.png");
public static final Icon RUN_SMALL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/runs.png"); public static final Icon HIDE_NORMAL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/hiden.png");
public static final Icon PAGE_BIG_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/pageb24.png"); public static final Icon HIDE_PRESSED_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/hidep.png");
public static final Icon WRITE_BIG_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/writeb24.png"); public static final Icon VIEW_NORMAL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/viewn.png");
public static final Icon ANA_BIG_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/anab24.png"); public static final Icon VIEW_PRESSED_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/viewp.png");
public static final Icon PAGE_SMALL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/pages.png"); public static final Icon RUN_BIG_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/run24.png");
public static final Icon WRITE_SMALL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/writes.png"); public static final Icon RUN_SMALL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/runs.png");
public static final Icon ANA_SMALL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/anas.png"); public static final Icon PAGE_BIG_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/pageb24.png");
public static final Icon REFRESH_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/refresh.png"); public static final Icon WRITE_BIG_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/writeb24.png");
public static final Icon FONT_ICON = BaseUtils.readIcon("/com/fr/design/images/gui/color/foreground.png"); public static final Icon ANA_BIG_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/anab24.png");
public static final Icon HISTORY_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/history.png"); public static final Icon PAGE_SMALL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/pages.png");
public static final Icon DELETE_ICON = BaseUtils.readIcon("com/fr/design/images/m_file/close.png"); public static final Icon WRITE_SMALL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/writes.png");
public static final Icon EDIT_ICON = BaseUtils.readIcon("com/fr/design/images/m_file/edit.png"); public static final Icon ANA_SMALL_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/anas.png");
public static final Icon SEARCH_ICON = BaseUtils.readIcon("/com/fr/design/images/data/search.png"); public static final Icon REFRESH_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/refresh.png");
public static final Icon CLEAR_ICON = BaseUtils.readIcon("/com/fr/design/images/data/source/delete.png"); public static final Icon FONT_ICON = BaseUtils.readIcon("/com/fr/design/images/gui/color/foreground.png");
public static final Icon LIST_EDIT_ICON = BaseUtils.readIcon("/com/fr/design/images/control/edit.png"); public static final Icon HISTORY_ICON = BaseUtils.readIcon("com/fr/design/images/buttonicon/history.png");
public static final Icon LIST_EDIT_WHITE_ICON = BaseUtils.readIcon("/com/fr/design/images/control/edit_white.png"); public static final Icon DELETE_ICON = BaseUtils.readIcon("com/fr/design/images/m_file/close.png");
public static final Color PRESSED_DARK_GRAY = new Color(127, 127, 127); public static final Icon EDIT_ICON = BaseUtils.readIcon("com/fr/design/images/m_file/edit.png");
public static final Color GRDIENT_DARK_GRAY = new Color(45, 45, 45); public static final Icon SEARCH_ICON = BaseUtils.readIcon("/com/fr/design/images/data/search.png");
public static final Color BARNOMAL = new Color(232, 232, 233); public static final Icon CLEAR_ICON = BaseUtils.readIcon("/com/fr/design/images/data/source/delete.png");
public static final int ARC = 0; public static final Icon LIST_EDIT_ICON = BaseUtils.readIcon("/com/fr/design/images/control/edit.png");
public static final int BUTTON_GROUP_ARC = 6; public static final Icon LIST_EDIT_WHITE_ICON = BaseUtils.readIcon("/com/fr/design/images/control/edit_white.png");
public static final int LARGEARC = 6; public static final Color PRESSED_DARK_GRAY = new Color(127, 127, 127);
public static final Stroke BS = new BasicStroke(1f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 2f, new float[]{3, 1}, 0); public static final Color GRDIENT_DARK_GRAY = new Color(45, 45, 45);
public static final Icon PREVIEW_DOWN = BaseUtils.readIcon("com/fr/design/images/buttonicon/prevew_down_icon.png"); public static final Color BARNOMAL = new Color(232, 232, 233);
public static final Icon CLOSE_OF_AUTHORITY = BaseUtils.readIcon("/com/fr/design/images/m_report/close.png"); public static final Color COMPONENT_BACKGROUND_COLOR = new Color(237,237,238);
public static final Icon CLOSE_OVER_AUTHORITY = BaseUtils.readIcon("/com/fr/design/images/m_report/close_over.png"); public static final int ARC = 0;
public static final Icon CLOSE_PRESS_AUTHORITY = BaseUtils.readIcon("/com/fr/design/images/m_report/close_press.png"); public static final int BUTTON_GROUP_ARC = 6;
public static final int CLOSE_AUTHORITY_HEIGHT_AND_WIDTH = 24; public static final int LARGEARC = 6;
public static final Stroke BS = new BasicStroke(1f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 2f, new float[]{3, 1}, 0);
public static final Icon PREVIEW_DOWN = BaseUtils.readIcon("com/fr/design/images/buttonicon/prevew_down_icon.png");
/** public static final Icon CLOSE_OF_AUTHORITY = BaseUtils.readIcon("/com/fr/design/images/m_report/close.png");
* 正在加载的界面 public static final Icon CLOSE_OVER_AUTHORITY = BaseUtils.readIcon("/com/fr/design/images/m_report/close_over.png");
*/ public static final Icon CLOSE_PRESS_AUTHORITY = BaseUtils.readIcon("/com/fr/design/images/m_report/close_press.png");
public static final Object PENDING = new Object() { public static final int CLOSE_AUTHORITY_HEIGHT_AND_WIDTH = 24;
@Override
public String toString() { /**
return Inter.getLocText("Loading") + "..."; * 正在加载的界面
} */
}; public static final Object PENDING = new Object() {
/**
* 数据库连接失败的界面 @Override
*/ public String toString() {
public static final Object CONNECTION_FAILED = new Object() { return Inter.getLocText("Loading") + "...";
}
public String toString() { };
return Inter.getLocText(new String[]{"Database", "Datasource-Connection_failed"}) + "!"; /**
} * 数据库连接失败的界面
}; */
public static final Object CONNECTION_FAILED = new Object() {
/**
* 自动补全的默认快捷键一般来说是 alt + /. public String toString() {
*/ return Inter.getLocText(new String[]{"Database", "Datasource-Connection_failed"}) + "!";
public static final String DEFAULT_AUTO_COMPLETE = "alt + SLASH"; }
};
/**
* 自动补全的默认快捷键一般来说是 alt + /.
*/
public static final String DEFAULT_AUTO_COMPLETE = "alt + SLASH";
} }

31
designer_base/src/com/fr/design/foldablepane/HeaderPane.java

@ -11,6 +11,9 @@ import java.awt.image.BufferedImage;
*/ */
public class HeaderPane extends JPanel { public class HeaderPane extends JPanel {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static final int TITLE_X = 9;
private static final int LEFT_X = 221;
private static final int LEFT_Y = 6;
private int headWidth = 280; private int headWidth = 280;
private int headHeight = 25; private int headHeight = 25;
private Color bgColor; private Color bgColor;
@ -52,19 +55,19 @@ public class HeaderPane extends JPanel {
private BufferedImage createPanelImage() { private BufferedImage createPanelImage() {
BufferedImage panelImage = new BufferedImage(getWidth(), headHeight, BufferedImage.TYPE_INT_ARGB); BufferedImage panelImage = new BufferedImage(getWidth(), headHeight, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = panelImage.createGraphics(); Graphics2D g2d = panelImage.createGraphics();
g2d.setColor(UIConstants.COMPONENT_BACKGROUND_COLOR);
g2d.fillRect(0, 0, headWidth, headHeight); g2d.fillRect(0, 0, headWidth, headHeight);
g2d.drawImage(UIConstants.DRAG_BAR, 0, 0, headWidth, headHeight, null); // g2d.drawImage(UIConstants.DRAG_BAR, 0, 0, headWidth, headHeight, null);
g2d.setFont(new Font("SimSun", 0, fontSize)); g2d.setFont(new Font("SimSun", 0, fontSize));
g2d.setPaint(bgColor); g2d.setPaint(bgColor);
// g2d.drawString(this.title, fontSize/2, headHeight-fontSize/3); // g2d.drawString(this.title, fontSize/2, headHeight-fontSize/3);
g2d.drawString(this.title, 0, headHeight - fontSize / 2 - 1); g2d.drawString(this.title, TITLE_X, headHeight - fontSize / 2 - 1);
if (this.isShow) { if (this.isShow) {
image = UIConstants.DRAG_DOWN_PRESS; image = UIConstants.DRAG_DOWN_SELECTED_SMALL;
g2d.drawImage(image, title.length() * fontSize, headHeight / 2 - 1, null); g2d.drawImage(image, LEFT_X, LEFT_Y, null);
} else { } else {
image = UIConstants.DRAG_RIGHT_PRESS; image = UIConstants.DRAG_LEFT_NORMAL_SMALL;
g2d.drawImage(image, title.length() * fontSize, headHeight / 3, null); g2d.drawImage(image, LEFT_X, LEFT_Y , null);
} }
@ -95,13 +98,13 @@ public class HeaderPane extends JPanel {
} }
public static void main(String[] args) { public static void main(String[] args) {
// JFrame mainFrame = new JFrame("UI Demo - Gloomyfish"); JFrame mainFrame = new JFrame("UI Demo - Gloomyfish");
// mainFrame.getContentPane().setLayout(new BorderLayout()); mainFrame.getContentPane().setLayout(new BorderLayout());
// mainFrame.getContentPane().add(new HeaderPane(Color.black, "基本", 280, 24), BorderLayout.CENTER); mainFrame.getContentPane().add(new HeaderPane(Color.black, "基本", 280, 24), BorderLayout.CENTER);
// mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// mainFrame.pack(); mainFrame.pack();
// mainFrame.setSize(280, 400); mainFrame.setSize(250, 400);
// mainFrame.setVisible(true); mainFrame.setVisible(true);
} }
} }

3
designer_base/src/com/fr/design/foldablepane/UIExpandablePane.java

@ -1,5 +1,7 @@
package com.fr.design.foldablepane; package com.fr.design.foldablepane;
import com.fr.design.constants.UIConstants;
import java.awt.*; import java.awt.*;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
@ -35,6 +37,7 @@ public class UIExpandablePane extends JPanel {
headerPanel = new HeaderPane(color, title,headWidth,headHeight); headerPanel = new HeaderPane(color, title,headWidth,headHeight);
headerPanel.addMouseListener(new PanelAction()); headerPanel.addMouseListener(new PanelAction());
contentPanel.setBorder(UIConstants.CELL_ATTR_NORMALBORDER);
this.add(headerPanel, BorderLayout.NORTH); this.add(headerPanel, BorderLayout.NORTH);
this.add(contentPanel, BorderLayout.CENTER); this.add(contentPanel, BorderLayout.CENTER);
setOpaque(false); setOpaque(false);

278
designer_base/src/com/fr/design/formula/TinyFormulaPane.java

@ -1,144 +1,136 @@
package com.fr.design.formula; package com.fr.design.formula;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.base.Formula; import com.fr.base.Formula;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.LayoutConstants;
import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener; import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UITextField;
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.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
/** /**
* *
* @author zhou * @author zhou
* @since 2012-6-1下午3:50:37 * @since 2012-6-1下午3:50:37
*/ */
public class TinyFormulaPane extends BasicBeanPane<String> implements UIObserver{ public class TinyFormulaPane extends BasicBeanPane<String> implements UIObserver{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
protected UITextField formulaTextField; protected UITextField formulaTextField;
protected UIButton formulaTextFieldButton; protected UIButton formulaTextFieldButton;
public TinyFormulaPane() { public TinyFormulaPane() {
this.initComponents(); this.initComponents();
} }
protected void initComponents() { protected void initComponents() {
formulaTextField = new UITextField(); formulaTextField = new UITextField();
formulaTextField.setGlobalName(Inter.getLocText("ExpandD-Sort_After_Expand")); formulaTextField.setGlobalName(Inter.getLocText("ExpandD-Sort_After_Expand"));
// 添加一公式编辑器按钮 // 添加一公式编辑器按钮
formulaTextFieldButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png")); formulaTextFieldButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png"));
formulaTextFieldButton.setToolTipText(Inter.getLocText("FR-Designer_Formula") + "..."); formulaTextFieldButton.setToolTipText(Inter.getLocText("FR-Designer_Formula") + "...");
formulaTextFieldButton.setPreferredSize(new Dimension(24, 20)); formulaTextFieldButton.setPreferredSize(new Dimension(24, 20));
formulaTextFieldButton.setOpaque(false); formulaTextFieldButton.setOpaque(false);
formulaTextFieldButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); formulaTextFieldButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
formulaTextFieldButton.addActionListener(new ActionListener() { formulaTextFieldButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
String text = formulaTextField.getText(); String text = formulaTextField.getText();
final UIFormula formulaPane = FormulaFactory.createFormulaPane(); final UIFormula formulaPane = FormulaFactory.createFormulaPane();
formulaPane.populate(new Formula(text)); formulaPane.populate(new Formula(text));
formulaPane.showLargeWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { formulaPane.showLargeWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() {
@Override @Override
public void doOk() { public void doOk() {
Formula fm = formulaPane.update(); Formula fm = formulaPane.update();
populateTextField(fm); populateTextField(fm);
okEvent(); okEvent();
} }
}).setVisible(true); }).setVisible(true);
} }
}); });
initLayout(); initLayout();
} }
protected void populateTextField(Formula fm) { protected void populateTextField(Formula fm) {
if (fm.getContent().length() <= 1) { if (fm.getContent().length() <= 1) {
formulaTextField.setText("$$$"); formulaTextField.setText("$$$");
} else { } else {
formulaTextField.setText(fm.getContent()); formulaTextField.setText(fm.getContent());
} }
} }
protected void initLayout() { protected void initLayout() {
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
double[] columnSize = {f }; JPanel pane = new JPanel(new BorderLayout(0,0));
double[] rowSize = { p }; JPanel pane1 = new JPanel(new BorderLayout(0,0));
pane1.add(formulaTextField, BorderLayout.NORTH);
Component[] components1 = new Component[]{ pane1.setBorder(BorderFactory.createEmptyBorder(0,0,0,5));
formulaTextFieldButton pane.add(pane1,BorderLayout.CENTER);
} ; pane.add(formulaTextFieldButton,BorderLayout.EAST);
JPanel pane = new JPanel(new BorderLayout(0,0));
pane.add(formulaTextField,BorderLayout.CENTER); this.setLayout(new BorderLayout());
pane.add(GUICoreUtils.createFlowPane(components1,FlowLayout.LEFT, LayoutConstants.HGAP_LARGE),BorderLayout.EAST); this.add(pane,BorderLayout.NORTH) ;
}
Component[][] components2 = new Component[][]{
new Component[]{pane} /**
}; * 公式窗口点击确定后的事件接口
*/
JPanel panel= TableLayoutHelper.createTableLayoutPane(components2,rowSize,columnSize) ; public void okEvent() {
this.setLayout(new BorderLayout());
this.add(panel,BorderLayout.CENTER) ; }
}
public UITextField getUITextField() {
/** return formulaTextField;
* 公式窗口点击确定后的事件接口 }
*/
public void okEvent() { @Override
public void populateBean(String ob) {
} this.formulaTextField.setText(ob);
}
public UITextField getUITextField() {
return formulaTextField; @Override
} public String updateBean() {
return formulaTextField.getText().trim();
@Override }
public void populateBean(String ob) {
this.formulaTextField.setText(ob); @Override
} protected String title4PopupWindow() {
return Inter.getLocText("Present-Formula_Present");
@Override }
public String updateBean() {
return formulaTextField.getText().trim(); @Override
} public Dimension getPreferredSize() {
return new Dimension(super.getPreferredSize().width, 20);
@Override }
protected String title4PopupWindow() {
return Inter.getLocText("Present-Formula_Present"); @Override
} public void registerChangeListener(UIObserverListener listener) {
if(formulaTextField != null) {
@Override formulaTextField.registerChangeListener(listener);
public Dimension getPreferredSize() { }
return new Dimension(super.getPreferredSize().width, 20); if(formulaTextFieldButton != null) {
} formulaTextFieldButton.registerChangeListener(listener);
}
@Override }
public void registerChangeListener(UIObserverListener listener) {
if(formulaTextField != null) { @Override
formulaTextField.registerChangeListener(listener); public boolean shouldResponseChangeListener() {
} return true;
if(formulaTextFieldButton != null) { }
formulaTextFieldButton.registerChangeListener(listener);
}
}
@Override
public boolean shouldResponseChangeListener() {
return true;
}
} }

1073
designer_base/src/com/fr/design/gui/frpane/RegPane.java

File diff suppressed because it is too large Load Diff

329
designer_base/src/com/fr/design/gui/frpane/UIComboBoxPane.java

@ -1,165 +1,166 @@
package com.fr.design.gui.frpane; package com.fr.design.gui.frpane;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.constants.UIConstants;
import com.fr.design.gui.icombobox.UIComboBox;
import javax.swing.*;
import java.awt.*; import javax.swing.*;
import java.awt.event.ItemEvent; import java.awt.*;
import java.awt.event.ItemListener; import java.awt.event.ItemEvent;
import java.util.List; import java.awt.event.ItemListener;
import java.util.List;
/**
* /**
* @author zhou *
* @since 2012-5-31下午12:25:21 * @author zhou
*/ * @since 2012-5-31下午12:25:21
public abstract class UIComboBoxPane<T> extends BasicBeanPane<T> { */
public abstract class UIComboBoxPane<T> extends BasicBeanPane<T> {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
protected abstract List<FurtherBasicBeanPane<? extends T>> initPaneList();
protected abstract List<FurtherBasicBeanPane<? extends T>> initPaneList();
protected UIComboBox jcb;
protected JPanel cardPane; protected UIComboBox jcb;
protected JPanel cardPane;
protected List<FurtherBasicBeanPane<? extends T>> cards;
protected String[] cardNames; protected List<FurtherBasicBeanPane<? extends T>> cards;
protected String[] cardNames;
public UIComboBoxPane() {
cards = initPaneList(); public UIComboBoxPane() {
initComponents(); cards = initPaneList();
} initComponents();
}
protected void initComponents() {
cardNames = new String[cards.size()]; protected void initComponents() {
cardNames = new String[cards.size()];
jcb = createComboBox();
cardPane = new JPanel(new CardLayout()) { jcb = createComboBox();
@Override cardPane = new JPanel(new CardLayout()) {
public Dimension getPreferredSize() { @Override
return cards.get(jcb.getSelectedIndex()).getPreferredSize(); public Dimension getPreferredSize() {
} return cards.get(jcb.getSelectedIndex()).getPreferredSize();
}; }
for (int i = 0; i < this.cards.size(); i++) { };
String name = this.cards.get(i).title4PopupWindow();// Name从各自的pane里面获取 for (int i = 0; i < this.cards.size(); i++) {
cardNames[i] = name; String name = this.cards.get(i).title4PopupWindow();// Name从各自的pane里面获取
cardPane.add(this.cards.get(i), cardNames[i]); cardNames[i] = name;
addComboBoxItem(cards, i); cardPane.add(this.cards.get(i), cardNames[i]);
} addComboBoxItem(cards, i);
}
addItemChangeEvent();
addItemChangeEvent();
initLayout();
initLayout();
jcb.setSelectedIndex(0); jcb.setSelectedIndex(0);
} }
public FurtherBasicBeanPane<? extends T> getSelectedPane(){ public FurtherBasicBeanPane<? extends T> getSelectedPane(){
return cards.get(jcb.getSelectedIndex()); return cards.get(jcb.getSelectedIndex());
} }
protected void addItemChangeEvent() { protected void addItemChangeEvent() {
jcb.addItemListener(new ItemListener() { jcb.addItemListener(new ItemListener() {
@Override @Override
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
comboBoxItemStateChanged(); comboBoxItemStateChanged();
CardLayout cl = (CardLayout)cardPane.getLayout(); CardLayout cl = (CardLayout)cardPane.getLayout();
cl.show(cardPane, cardNames[jcb.getSelectedIndex()]); cl.show(cardPane, cardNames[jcb.getSelectedIndex()]);
} }
}); });
} }
protected UIComboBox createComboBox() { protected UIComboBox createComboBox() {
return new UIComboBox(); return new UIComboBox();
} }
protected void addComboBoxItem(List<FurtherBasicBeanPane<? extends T>> cards, int index) { protected void addComboBoxItem(List<FurtherBasicBeanPane<? extends T>> cards, int index) {
jcb.addItem(cards.get(index).title4PopupWindow()); jcb.addItem(cards.get(index).title4PopupWindow());
} }
/** /**
* 设置只支持其中的某个选项, * 设置只支持其中的某个选项,
*/ */
public void justSupportOneSelect(boolean surpport) { public void justSupportOneSelect(boolean surpport) {
if(!surpport) { if(!surpport) {
jcb.setSelectedIndex(0); jcb.setSelectedIndex(0);
} }
jcb.setEnabled(surpport); jcb.setEnabled(surpport);
} }
/** /**
* august 如果需要的布局有变化覆盖之 * august 如果需要的布局有变化覆盖之
*/ */
protected void initLayout() { protected void initLayout() {
this.setLayout(new BorderLayout(0,6)); this.setLayout(new BorderLayout(0,6));
JPanel northPane = new JPanel(new BorderLayout()); JPanel northPane = new JPanel(new BorderLayout());
northPane.add(jcb, BorderLayout.CENTER); northPane.add(jcb, BorderLayout.CENTER);
this.add(northPane, BorderLayout.NORTH); this.add(northPane, BorderLayout.NORTH);
this.add(cardPane, BorderLayout.CENTER); northPane.setBorder(UIConstants.CELL_ATTR_NORMALBORDER);
this.add(cardPane, BorderLayout.CENTER);
}
}
protected void comboBoxItemStateChanged() {
protected void comboBoxItemStateChanged() {
}
}
public void reset() {
jcb.setSelectedIndex(0); public void reset() {
for (FurtherBasicBeanPane<?> pane : cards) { jcb.setSelectedIndex(0);
pane.reset(); for (FurtherBasicBeanPane<?> pane : cards) {
} pane.reset();
} }
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override @SuppressWarnings({ "rawtypes", "unchecked" })
public void populateBean(T ob) { @Override
for (int i = 0; i < this.cards.size(); i++) { public void populateBean(T ob) {
FurtherBasicBeanPane pane = cards.get(i); for (int i = 0; i < this.cards.size(); i++) {
if (pane.accept(ob)) { FurtherBasicBeanPane pane = cards.get(i);
pane.populateBean(ob); if (pane.accept(ob)) {
jcb.setSelectedIndex(i); pane.populateBean(ob);
return; jcb.setSelectedIndex(i);
} return;
} }
} }
}
@Override
public T updateBean() { @Override
return cards.get(jcb.getSelectedIndex()).updateBean(); public T updateBean() {
} return cards.get(jcb.getSelectedIndex()).updateBean();
}
@Override
public void checkValid() throws Exception { @Override
cards.get(jcb.getSelectedIndex()).checkValid(); public void checkValid() throws Exception {
cards.get(jcb.getSelectedIndex()).checkValid();
}
}
public int getSelectedIndex() {
return jcb.getSelectedIndex(); public int getSelectedIndex() {
} return jcb.getSelectedIndex();
}
public void setSelectedIndex(int index) {
jcb.setSelectedIndex(index); public void setSelectedIndex(int index) {
} jcb.setSelectedIndex(index);
}
public void addTabChangeListener(ItemListener l){
jcb.addItemListener(l); public void addTabChangeListener(ItemListener l){
} jcb.addItemListener(l);
}
public UIComboBox getUIComboBox(){
return this.jcb; public UIComboBox getUIComboBox(){
} return this.jcb;
}
public List<FurtherBasicBeanPane<? extends T>> getCards(){
return this.cards; public List<FurtherBasicBeanPane<? extends T>> getCards(){
} return this.cards;
}
public void clear() {
reset(); public void clear() {
} reset();
}
} }

799
designer_base/src/com/fr/design/gui/style/FormatPane.java

@ -1,398 +1,403 @@
package com.fr.design.gui.style; package com.fr.design.gui.style;
import com.fr.base.CoreDecimalFormat; import com.fr.base.CoreDecimalFormat;
import com.fr.base.GraphHelper; import com.fr.base.GraphHelper;
import com.fr.base.Style; import com.fr.base.Style;
import com.fr.base.TextFormat; import com.fr.base.TextFormat;
import com.fr.data.core.FormatField; import com.fr.data.core.FormatField;
import com.fr.data.core.FormatField.FormatContents; import com.fr.data.core.FormatField.FormatContents;
import com.fr.design.border.UIRoundedBorder; import com.fr.design.border.UIRoundedBorder;
import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.LayoutConstants;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombobox.UIComboBoxRenderer; import com.fr.design.gui.icombobox.UIComboBoxRenderer;
import com.fr.design.gui.ilable.UILabel; 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.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.Border; import javax.swing.border.Border;
import javax.swing.border.TitledBorder; import javax.swing.border.TitledBorder;
import java.awt.*; import java.awt.*;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.text.Format; import java.text.Format;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
/** /**
* Format pane to edit java.text.Format. * Format pane to edit java.text.Format.
* *
* @author zhou * @author zhou
* @since 2012-5-24上午10:57:00 * @since 2012-5-24上午10:57:00
*/ */
public class FormatPane extends AbstractBasicStylePane { public class FormatPane extends AbstractBasicStylePane {
private static final long serialVersionUID = 724330854437726751L; private static final long serialVersionUID = 724330854437726751L;
private static final int LABLE_X = 4; private static final int LABLE_X = 4;
private static final int LABLE_Y = 18; private static final int LABLE_Y = 18;
private static final int LABLE_DELTA_WIDTH = 8; private static final int LABLE_DELTA_WIDTH = 8;
private static final int LABLE_HEIGHT = 15; //标签背景的范围 private static final int LABLE_HEIGHT = 15; //标签背景的范围
private static final int CURRENCY_FLAG_POINT = 6; private static final int CURRENCY_FLAG_POINT = 6;
private static final Integer[] TYPES = new Integer[]{FormatContents.NULL, FormatContents.NUMBER, FormatContents.CURRENCY, FormatContents.PERCENT, FormatContents.SCIENTIFIC, private static final Integer[] TYPES = new Integer[]{FormatContents.NULL, FormatContents.NUMBER, FormatContents.CURRENCY, FormatContents.PERCENT, FormatContents.SCIENTIFIC,
FormatContents.DATE, FormatContents.TIME, FormatContents.TEXT}; FormatContents.DATE, FormatContents.TIME, FormatContents.TEXT};
private static final Integer[] DATETYPES = new Integer[]{FormatContents.NULL, FormatContents.DATE, FormatContents.TIME,}; private static final Integer[] DATETYPES = new Integer[]{FormatContents.NULL, FormatContents.DATE, FormatContents.TIME,};
private Format format; private Format format;
private UIComboBox typeComboBox; private UIComboBox typeComboBox;
private UIComboBox textField; private UIComboBox textField;
private UILabel sampleLabel; private UILabel sampleLabel;
private JPanel contentPane; private JPanel contentPane;
private JPanel txtCenterPane; private JPanel txtCenterPane;
private JPanel centerPane; private JPanel centerPane;
private JPanel formatFontPane; private JPanel formatFontPane;
private FRFontPane frFontPane; private FRFontPane frFontPane;
private boolean isRightFormate; private boolean isRightFormate;
private boolean isDate = false; private boolean isDate = false;
private boolean isFormat = false; private boolean isFormat = false;
/** /**
* Constructor. * Constructor.
*/ */
public FormatPane() { public FormatPane() {
this.initComponents(TYPES); this.initComponents(TYPES);
} this.setBorder(UIConstants.CELL_ATTR_NORMALBORDER);
}
protected void initComponents(Integer[] types) {
this.setLayout(new BorderLayout(0, 4)); protected void initComponents(Integer[] types) {
iniSampleLable(); this.setLayout(new BorderLayout(0, 4));
contentPane = new JPanel(new BorderLayout(0, 4)) { iniSampleLable();
@Override contentPane = new JPanel(new BorderLayout(0, 4)) {
public Dimension getPreferredSize() { @Override
return new Dimension(super.getPreferredSize().width, 70); public Dimension getPreferredSize() {
} return new Dimension(super.getPreferredSize().width, 70);
}; }
typeComboBox = new UIComboBox(types); };
UIComboBoxRenderer render = createComBoxRender(); typeComboBox = new UIComboBox(types);
typeComboBox.setRenderer(render); UIComboBoxRenderer render = createComBoxRender();
typeComboBox.addItemListener(itemListener); typeComboBox.setRenderer(render);
contentPane.add(sampleLabel, BorderLayout.NORTH); typeComboBox.addItemListener(itemListener);
centerPane = new JPanel(new CardLayout()); contentPane.add(sampleLabel, BorderLayout.NORTH);
centerPane.add(new JPanel(), "hide"); centerPane = new JPanel(new CardLayout());
centerPane.setPreferredSize(new Dimension(0, 0)); centerPane.add(new JPanel(), "hide");
centerPane.add(contentPane, "show"); centerPane.setPreferredSize(new Dimension(0, 0));
formatFontPane = new JPanel(new BorderLayout()); centerPane.add(contentPane, "show");
formatFontPane.add(centerPane, BorderLayout.NORTH); formatFontPane = new JPanel(new BorderLayout());
formatFontPane.add(new FRFontPane(), BorderLayout.CENTER); formatFontPane.add(centerPane, BorderLayout.NORTH);
txtCenterPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); formatFontPane.add(new FRFontPane(), BorderLayout.CENTER);
contentPane.add(txtCenterPane, BorderLayout.CENTER); txtCenterPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
textField = new UIComboBox(FormatField.getInstance().getFormatArray(getFormatContents())); contentPane.add(txtCenterPane, BorderLayout.CENTER);
textField.addItemListener(textFieldItemListener); textField = new UIComboBox(FormatField.getInstance().getFormatArray(getFormatContents()));
textField.setEditable(true); textField.addItemListener(textFieldItemListener);
txtCenterPane.add(textField, BorderLayout.NORTH); textField.setEditable(true);
frFontPane = new FRFontPane(); txtCenterPane.add(textField, BorderLayout.NORTH);
double f = TableLayout.FILL; frFontPane = new FRFontPane();
double p = TableLayout.PREFERRED; UILabel font = new UILabel(Inter.getLocText("FR-Designer_FRFont"), SwingConstants.LEFT);
Component[][] components = new Component[][]{ JPanel fontPane = new JPanel(new BorderLayout());
new Component[]{null, null}, fontPane.add(font, BorderLayout.NORTH);
new Component[]{new UILabel(Inter.getLocText("FR-Base_Format") + " ", SwingConstants.LEFT), typeComboBox},
new Component[]{null, centerPane}, double f = TableLayout.FILL;
new Component[]{new UILabel(Inter.getLocText("FR-Designer_FRFont"), SwingConstants.LEFT), frFontPane}, double p = TableLayout.PREFERRED;
new Component[]{null, null} Component[][] components = new Component[][]{
}; new Component[]{null, null},
double[] rowSize = {p, p, p, p, p}; new Component[]{new UILabel(Inter.getLocText("FR-Base_Format") + " ", SwingConstants.LEFT), typeComboBox},
double[] columnSize = {p, f}; new Component[]{null, centerPane},
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 3}, {1, 1}}; new Component[]{fontPane, frFontPane},
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_SMALL, LayoutConstants.VGAP_MEDIUM); new Component[]{null, null}
this.add(panel, BorderLayout.CENTER); };
} double[] rowSize = {p, p, p, p, p};
double[] columnSize = {p, f};
protected UIComboBoxRenderer createComBoxRender() { int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 3}, {1, 1}};
return new UIComboBoxRenderer() { JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_SMALL, LayoutConstants.VGAP_MEDIUM);
@Override this.add(panel, BorderLayout.CENTER);
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { }
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof Integer) { protected UIComboBoxRenderer createComBoxRender() {
label.setText(" " + FormatField.getInstance().getName((Integer) value)); return new UIComboBoxRenderer() {
} @Override
return label; public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
} JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}; if (value instanceof Integer) {
} label.setText(" " + FormatField.getInstance().getName((Integer) value));
}
private void iniSampleLable() { return label;
Border innterborder = new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 4); }
Font tmpFont = null; };
Border border = BorderFactory.createTitledBorder(innterborder, Inter.getLocText("FR-Base_StyleFormat_Sample"), TitledBorder.LEFT, 0, tmpFont, UIConstants.LINE_COLOR); }
sampleLabel = new UILabel(FormatField.getInstance().getFormatValue()) {
private void iniSampleLable() {
@Override Border innterborder = new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 4);
public void paint(Graphics g) { Font tmpFont = null;
super.paint(g); Border border = BorderFactory.createTitledBorder(innterborder, Inter.getLocText("FR-Base_StyleFormat_Sample"), TitledBorder.LEFT, 0, tmpFont, UIConstants.LINE_COLOR);
int width = getWidth(); sampleLabel = new UILabel(FormatField.getInstance().getFormatValue()) {
Color orignal = g.getColor();
g.setColor(getBackground()); @Override
g.fillRect(LABLE_X, LABLE_Y, width - LABLE_DELTA_WIDTH, LABLE_HEIGHT); public void paint(Graphics g) {
g.setColor(UIConstants.LINE_COLOR); super.paint(g);
FontMetrics cellFM = g.getFontMetrics(); int width = getWidth();
int textWidth = cellFM.stringWidth(getText()); Color orignal = g.getColor();
GraphHelper.drawString(g, getText(), (width - textWidth) / 2, 26); g.setColor(getBackground());
g.setColor(orignal); g.fillRect(LABLE_X, LABLE_Y, width - LABLE_DELTA_WIDTH, LABLE_HEIGHT);
} g.setColor(UIConstants.LINE_COLOR);
}; FontMetrics cellFM = g.getFontMetrics();
sampleLabel.setHorizontalAlignment(UILabel.CENTER); int textWidth = cellFM.stringWidth(getText());
sampleLabel.setBorder(border); GraphHelper.drawString(g, getText(), (width - textWidth) / 2, 26);
} g.setColor(orignal);
}
};
@Override sampleLabel.setHorizontalAlignment(UILabel.CENTER);
/** sampleLabel.setBorder(border);
* 得到合适的大小 }
*/
public Dimension getPreferredSize() {
if (this.typeComboBox.getSelectedIndex() == FormatContents.NULL) { @Override
return typeComboBox.getPreferredSize(); /**
} * 得到合适的大小
return super.getPreferredSize(); */
} public Dimension getPreferredSize() {
if (this.typeComboBox.getSelectedIndex() == FormatContents.NULL) {
/** return typeComboBox.getPreferredSize();
* 弹出框标题 }
* return super.getPreferredSize();
* @return 标题 }
*/
public String title4PopupWindow() { /**
return Inter.getLocText("FR-Designer_Text"); * 弹出框标题
} *
* @return 标题
/** */
* Populate public String title4PopupWindow() {
*/ return Inter.getLocText("FR-Designer_Text");
public void populateBean(Format format) { }
this.format = format;
/**
if (format == null) { * Populate
this.typeComboBox.setSelectedIndex(FormatContents.NULL); */
} else { public void populateBean(Format format) {
if (format instanceof CoreDecimalFormat) { this.format = format;
// check all value
String pattern = ((CoreDecimalFormat) format).toPattern(); if (format == null) {
boolean isCurrency1 = (pattern.length() > 0 && pattern.charAt(0) == '¤'); this.typeComboBox.setSelectedIndex(FormatContents.NULL);
boolean isCurrency2 = (pattern.length() > 0 && pattern.charAt(0) == '$'); } else {
boolean isCurrency = isCurrency1 || isCurrency2; if (format instanceof CoreDecimalFormat) {
boolean isCurrency4 = (pattern.length() > CURRENCY_FLAG_POINT && ComparatorUtils.equals(pattern.substring(0, CURRENCY_FLAG_POINT), "#,##0;")); // check all value
if (isCurrency || isCurrency4) { String pattern = ((CoreDecimalFormat) format).toPattern();
setPatternComboBoxAndList(FormatContents.CURRENCY, pattern); boolean isCurrency1 = (pattern.length() > 0 && pattern.charAt(0) == '¤');
} else if (pattern.endsWith("%")) { boolean isCurrency2 = (pattern.length() > 0 && pattern.charAt(0) == '$');
setPatternComboBoxAndList(FormatContents.PERCENT, pattern); boolean isCurrency = isCurrency1 || isCurrency2;
} else if (pattern.indexOf("E") > 0) { boolean isCurrency4 = (pattern.length() > CURRENCY_FLAG_POINT && ComparatorUtils.equals(pattern.substring(0, CURRENCY_FLAG_POINT), "#,##0;"));
setPatternComboBoxAndList(FormatContents.SCIENTIFIC, pattern); if (isCurrency || isCurrency4) {
} else { setPatternComboBoxAndList(FormatContents.CURRENCY, pattern);
setPatternComboBoxAndList(FormatContents.NUMBER, pattern); } else if (pattern.endsWith("%")) {
} setPatternComboBoxAndList(FormatContents.PERCENT, pattern);
} else if (format instanceof SimpleDateFormat) { // date and time } else if (pattern.indexOf("E") > 0) {
String pattern = ((SimpleDateFormat) format).toPattern(); setPatternComboBoxAndList(FormatContents.SCIENTIFIC, pattern);
if (!isTimeType(pattern)) { } else {
setPatternComboBoxAndList(FormatContents.DATE, pattern); setPatternComboBoxAndList(FormatContents.NUMBER, pattern);
} else { }
setPatternComboBoxAndList(FormatContents.TIME, pattern); } else if (format instanceof SimpleDateFormat) { // date and time
} String pattern = ((SimpleDateFormat) format).toPattern();
} else if (format instanceof TextFormat) { // Text if (!isTimeType(pattern)) {
this.typeComboBox.setSelectedItem(FormatContents.TEXT); setPatternComboBoxAndList(FormatContents.DATE, pattern);
} } else {
} setPatternComboBoxAndList(FormatContents.TIME, pattern);
} }
} else if (format instanceof TextFormat) { // Text
this.typeComboBox.setSelectedItem(FormatContents.TEXT);
/** }
* 判断是否是数组有模式 }
* }
* @param stringArray 字符串数组
* @param pattern 格式
* @return 是否是数组有模式 /**
*/ * 判断是否是数组有模式
public static int isArrayContainPattern(String[] stringArray, String pattern) { *
for (int i = 0; i < stringArray.length; i++) { * @param stringArray 字符串数组
if (ComparatorUtils.equals(stringArray[i], pattern)) { * @param pattern 格式
return i; * @return 是否是数组有模式
} */
} public static int isArrayContainPattern(String[] stringArray, String pattern) {
for (int i = 0; i < stringArray.length; i++) {
return -1; if (ComparatorUtils.equals(stringArray[i], pattern)) {
} return i;
}
private void setPatternComboBoxAndList(int formatStyle, String pattern) { }
this.typeComboBox.setSelectedItem(formatStyle);
int i = isArrayContainPattern(FormatField.getInstance().getFormatArray(formatStyle), pattern); return -1;
if (i == -1) { }
this.textField.setSelectedIndex(0);
} else { private void setPatternComboBoxAndList(int formatStyle, String pattern) {
this.textField.setSelectedIndex(i); this.typeComboBox.setSelectedItem(formatStyle);
} int i = isArrayContainPattern(FormatField.getInstance().getFormatArray(formatStyle), pattern);
} if (i == -1) {
this.textField.setSelectedIndex(0);
private boolean isTimeType(String pattern) { } else {
return pattern.matches(".*[Hhmsa].*"); this.textField.setSelectedIndex(i);
} }
}
/**
* update private boolean isTimeType(String pattern) {
*/ return pattern.matches(".*[Hhmsa].*");
public Format update() { }
String patternString = String.valueOf(textField.getSelectedItem());
if (getFormatContents() == FormatContents.TEXT) { /**
return FormatField.getInstance().getFormat(getFormatContents(), patternString); * update
} */
if (isRightFormate) { public Format update() {
if (StringUtils.isNotEmpty(patternString)) { String patternString = String.valueOf(textField.getSelectedItem());
return FormatField.getInstance().getFormat(getFormatContents(), patternString); if (getFormatContents() == FormatContents.TEXT) {
} return FormatField.getInstance().getFormat(getFormatContents(), patternString);
} }
return null; if (isRightFormate) {
} if (StringUtils.isNotEmpty(patternString)) {
return FormatField.getInstance().getFormat(getFormatContents(), patternString);
private int getFormatContents() { }
return (Integer) typeComboBox.getSelectedItem(); }
} return null;
}
/**
* Refresh preview label. private int getFormatContents() {
*/ return (Integer) typeComboBox.getSelectedItem();
private void refreshPreviewLabel() { }
this.sampleLabel.setText(FormatField.getInstance().getFormatValue());
this.sampleLabel.setForeground(UIManager.getColor("Label.foreground")); /**
try { * Refresh preview label.
isRightFormate = true; */
if (StringUtils.isEmpty(String.valueOf(textField.getSelectedItem()))) { private void refreshPreviewLabel() {
return; this.sampleLabel.setText(FormatField.getInstance().getFormatValue());
} this.sampleLabel.setForeground(UIManager.getColor("Label.foreground"));
this.sampleLabel.setText(FormatField.getInstance().getFormatValue(getFormatContents(), String.valueOf(textField.getSelectedItem()))); try {
} catch (Exception e) { isRightFormate = true;
this.sampleLabel.setForeground(Color.red); if (StringUtils.isEmpty(String.valueOf(textField.getSelectedItem()))) {
this.sampleLabel.setText(e.getMessage()); return;
isRightFormate = false; }
} this.sampleLabel.setText(FormatField.getInstance().getFormatValue(getFormatContents(), String.valueOf(textField.getSelectedItem())));
} } catch (Exception e) {
this.sampleLabel.setForeground(Color.red);
private boolean isTextOrNull() { this.sampleLabel.setText(e.getMessage());
int contents = getFormatContents(); isRightFormate = false;
return contents == FormatContents.TEXT || contents == FormatContents.NULL; }
} }
/** private boolean isTextOrNull() {
* Radio selection listener. int contents = getFormatContents();
*/ return contents == FormatContents.TEXT || contents == FormatContents.NULL;
ItemListener itemListener = new ItemListener() { }
@Override /**
public void itemStateChanged(ItemEvent e) { * Radio selection listener.
if (e.getStateChange() == ItemEvent.SELECTED) { */
int contents = getFormatContents(); ItemListener itemListener = new ItemListener() {
String[] items = FormatField.getInstance().getFormatArray(contents);
CardLayout cardLayout = (CardLayout) centerPane.getLayout(); @Override
public void itemStateChanged(ItemEvent e) {
if (isTextOrNull()) { if (e.getStateChange() == ItemEvent.SELECTED) {
centerPane.setPreferredSize(new Dimension(0, 0)); int contents = getFormatContents();
cardLayout.show(centerPane, "hide"); String[] items = FormatField.getInstance().getFormatArray(contents);
} else { CardLayout cardLayout = (CardLayout) centerPane.getLayout();
textField.removeAllItems();
for (int i = 0; i < items.length; i++) { if (isTextOrNull()) {
textField.addItem(items[i]); centerPane.setPreferredSize(new Dimension(0, 0));
} cardLayout.show(centerPane, "hide");
centerPane.setPreferredSize(new Dimension(270, 70)); } else {
cardLayout.show(centerPane, "show"); textField.removeAllItems();
} for (int i = 0; i < items.length; i++) {
isFormat = true; textField.addItem(items[i]);
} }
centerPane.setPreferredSize(new Dimension(270, 70));
} cardLayout.show(centerPane, "show");
}; }
isFormat = true;
ItemListener textFieldItemListener = new ItemListener() { }
@Override
public void itemStateChanged(ItemEvent e) { }
if (e.getStateChange() == ItemEvent.SELECTED) { };
isFormat = true;
refreshPreviewLabel(); ItemListener textFieldItemListener = new ItemListener() {
} @Override
} public void itemStateChanged(ItemEvent e) {
}; if (e.getStateChange() == ItemEvent.SELECTED) {
isFormat = true;
@Override refreshPreviewLabel();
/** }
* populate }
*/ };
public void populateBean(Style style) {
this.populateBean(style.getFormat()); @Override
isFormat = false; /**
this.frFontPane.populateBean(style.getFRFont()); * populate
} */
public void populateBean(Style style) {
@Override this.populateBean(style.getFormat());
/** isFormat = false;
* update this.frFontPane.populateBean(style.getFRFont());
*/ }
public Style update(Style style) {
if (isFormat) { @Override
isFormat = false; /**
return style.deriveFormat(this.update()); * update
} else { */
return style.deriveFRFont(this.frFontPane.update(style.getFRFont())); public Style update(Style style) {
} if (isFormat) {
} isFormat = false;
return style.deriveFormat(this.update());
/** } else {
* 默认只显示百分比的编辑下拉. return style.deriveFRFont(this.frFontPane.update(style.getFRFont()));
*/ }
public void justUsePercentFormat() { }
typeComboBox.setEnabled(false);
this.typeComboBox.setSelectedItem(FormatContents.PERCENT); /**
} * 默认只显示百分比的编辑下拉.
*/
public void setForDataSheet() { public void justUsePercentFormat() {
Integer[] otherTypes = new Integer[]{FormatContents.NULL, FormatContents.NUMBER, FormatContents.CURRENCY, FormatContents.PERCENT, FormatContents.SCIENTIFIC,}; typeComboBox.setEnabled(false);
this.typeComboBox = new UIComboBox(otherTypes); this.typeComboBox.setSelectedItem(FormatContents.PERCENT);
UIComboBoxRenderer render = new UIComboBoxRenderer() { }
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { public void setForDataSheet() {
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); Integer[] otherTypes = new Integer[]{FormatContents.NULL, FormatContents.NUMBER, FormatContents.CURRENCY, FormatContents.PERCENT, FormatContents.SCIENTIFIC,};
if (value instanceof Integer) { this.typeComboBox = new UIComboBox(otherTypes);
label.setText(" " + FormatField.getInstance().getName((Integer) value)); UIComboBoxRenderer render = new UIComboBoxRenderer() {
} @Override
return label; public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
} JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}; if (value instanceof Integer) {
typeComboBox.setRenderer(render); label.setText(" " + FormatField.getInstance().getName((Integer) value));
typeComboBox.addItemListener(itemListener); }
this.add(typeComboBox, BorderLayout.NORTH); return label;
} }
};
public void setComboBoxModel(boolean isDate) { typeComboBox.setRenderer(render);
if (this.isDate != isDate) { typeComboBox.addItemListener(itemListener);
this.isDate = isDate; this.add(typeComboBox, BorderLayout.NORTH);
this.typeComboBox.setSelectedIndex(0); }
if (isDate) {
for (int i = 0; i < DATETYPES.length; i++) { public void setComboBoxModel(boolean isDate) {
this.typeComboBox.addItem(DATETYPES[i]); if (this.isDate != isDate) {
} this.isDate = isDate;
for (int i = 0; i < TYPES.length; i++) { this.typeComboBox.setSelectedIndex(0);
this.typeComboBox.removeItemAt(1); if (isDate) {
} for (int i = 0; i < DATETYPES.length; i++) {
} else { this.typeComboBox.addItem(DATETYPES[i]);
for (int i = 0; i < TYPES.length; i++) { }
this.typeComboBox.addItem(TYPES[i]); for (int i = 0; i < TYPES.length; i++) {
} this.typeComboBox.removeItemAt(1);
for (int i = 0; i < DATETYPES.length; i++) { }
this.typeComboBox.removeItemAt(1); } else {
} for (int i = 0; i < TYPES.length; i++) {
} this.typeComboBox.addItem(TYPES[i]);
} }
} for (int i = 0; i < DATETYPES.length; i++) {
this.typeComboBox.removeItemAt(1);
}
}
}
}
} }

BIN
designer_base/src/com/fr/design/images/buttonicon/downSelected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

BIN
designer_base/src/com/fr/design/images/buttonicon/leftNormal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Loading…
Cancel
Save