Browse Source

Merge branch 'release/10.0' of http://cloud.finedevelop.com:2015/scm/~wim.zhai/design into release/10.0

final/10.0
Wim.Zhai 6 years ago
parent
commit
20cc8d1ab4
  1. 2
      designer-base/src/main/java/com/fr/design/actions/help/SystemInfoPane.java
  2. 2
      designer-base/src/main/java/com/fr/design/condition/ConditionAttributesPane.java
  3. 4
      designer-base/src/main/java/com/fr/design/data/datapane/connect/JDBCDefPane.java
  4. 2
      designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewLabel.java
  5. 2
      designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/AutoStoreProcedureTableModel.java
  6. 2
      designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/EmbeddedTableDataDefinedPane.java
  7. 2
      designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/MultiTDTableDataPane.java
  8. 4
      designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/StoreProcedureParameterPane.java
  9. 2
      designer-base/src/main/java/com/fr/design/dialog/JWizardDialog.java
  10. 2
      designer-base/src/main/java/com/fr/design/formula/TinyFormulaPane.java
  11. 212
      designer-base/src/main/java/com/fr/design/gui/controlpane/CommonShortCutHandlers.java
  12. 115
      designer-base/src/main/java/com/fr/design/gui/controlpane/JControlPane.java
  13. 112
      designer-base/src/main/java/com/fr/design/gui/controlpane/JControlUpdatePane.java
  14. 634
      designer-base/src/main/java/com/fr/design/gui/controlpane/JListControlPane.java
  15. 112
      designer-base/src/main/java/com/fr/design/gui/controlpane/ListControlPaneHelper.java
  16. 35
      designer-base/src/main/java/com/fr/design/gui/controlpane/ListControlPaneProvider.java
  17. 2
      designer-base/src/main/java/com/fr/design/gui/controlpane/ObjectJControlPane.java
  18. 6
      designer-base/src/main/java/com/fr/design/gui/controlpane/ObjectUIControlPane.java
  19. 15
      designer-base/src/main/java/com/fr/design/gui/controlpane/ShortCutListenerProvider.java
  20. 203
      designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java
  21. 880
      designer-base/src/main/java/com/fr/design/gui/controlpane/UIListControlPane.java
  22. 179
      designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/AbstractShortCutFactory.java
  23. 112
      designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/OldShortCutFactory.java
  24. 171
      designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/ShortCutFactory.java
  25. 2
      designer-base/src/main/java/com/fr/design/gui/frpane/EditingStringListPane.java
  26. 2
      designer-base/src/main/java/com/fr/design/gui/frpane/ImgChoosePane.java
  27. 2
      designer-base/src/main/java/com/fr/design/gui/frpane/ImgChooseWrapper.java
  28. 4
      designer-base/src/main/java/com/fr/design/gui/frpane/ObjectProperiesPane.java
  29. 2
      designer-base/src/main/java/com/fr/design/gui/frpane/UITabbedPane.java
  30. 61
      designer-base/src/main/java/com/fr/design/gui/ilist/JNameEdList.java
  31. 386
      designer-base/src/main/java/com/fr/design/gui/ilist/UINameEdList.java
  32. 2
      designer-base/src/main/java/com/fr/design/gui/imenutable/UIMenuTable.java
  33. 2
      designer-base/src/main/java/com/fr/design/gui/imenutable/UIMenuTableUI.java
  34. 2
      designer-base/src/main/java/com/fr/design/gui/itable/UITableUI.java
  35. 2
      designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java
  36. 2
      designer-base/src/main/java/com/fr/design/gui/itree/filetree/ReportletPane.java
  37. 2
      designer-base/src/main/java/com/fr/design/mainframe/widget/accessibles/TemplateStylePane.java
  38. 8
      designer-base/src/main/java/com/fr/design/menu/KeySetUtils.java
  39. 2
      designer-base/src/main/java/com/fr/design/present/FormulaPresentPane.java
  40. 2
      designer-base/src/main/java/com/fr/design/present/NonePresentPane.java
  41. 2
      designer-base/src/main/java/com/fr/design/style/BorderPane.java
  42. 2
      designer-base/src/main/java/com/fr/design/style/FRFontPane.java
  43. 2
      designer-base/src/main/java/com/fr/design/style/background/image/ImageSelectPane.java
  44. 2
      designer-base/src/main/java/com/fr/design/style/color/DetailColorSelectPane.java
  45. 2
      designer-base/src/main/java/com/fr/design/utils/gui/GUICoreUtils.java
  46. 5
      designer-base/src/main/java/com/fr/env/EnvListPane.java
  47. 2
      designer-base/src/main/java/com/fr/env/RemoteSignInPane.java
  48. 2
      designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java
  49. 4
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/PresentComboBox.java
  50. 18
      designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java
  51. 33
      designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartShortCutFactory.java
  52. 2
      designer-chart/src/main/java/com/fr/van/chart/designer/other/VanChartConditionListControlPane.java
  53. 6
      designer-chart/src/main/java/com/fr/van/chart/designer/style/background/AlertLineListControlPane.java
  54. 6
      designer-chart/src/main/java/com/fr/van/chart/designer/style/background/BackgroundListControlPane.java
  55. 6
      designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartStackedAndAxisListControlPane.java
  56. 2
      designer-form/src/main/java/com/fr/design/designer/properties/VerticalSplitProperties.java
  57. 2
      designer-form/src/main/java/com/fr/design/designer/properties/items/HorizontalAlignmentItems.java
  58. 2
      designer-form/src/main/java/com/fr/design/designer/properties/items/LabelHorizontalAlignmentItems.java
  59. 4
      designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/ColorPalette.java
  60. 4
      designer-realize/src/main/java/com/fr/design/actions/utils/DeprecatedActionManager.java
  61. 2
      designer-realize/src/main/java/com/fr/design/headerfooter/HeaderFooterEditPane.java
  62. 2
      designer-realize/src/main/java/com/fr/design/headerfooter/ImagePane.java
  63. 10
      designer-realize/src/main/java/com/fr/design/mainframe/SheetNameTabPane.java
  64. 6
      designer-realize/src/main/java/com/fr/design/present/BarCodePane.java
  65. 2
      designer-realize/src/main/java/com/fr/design/report/ExcelExportPane.java
  66. 2
      designer-realize/src/main/java/com/fr/design/report/PDFExportPane.java
  67. 4
      designer-realize/src/main/java/com/fr/design/report/PageSetupPane.java
  68. 2
      designer-realize/src/main/java/com/fr/design/report/ReportExportAttrPane.java
  69. 2
      designer-realize/src/main/java/com/fr/design/report/SelectImagePane.java
  70. 2
      designer-realize/src/main/java/com/fr/design/report/WordExportPane.java
  71. 6
      designer-realize/src/main/java/com/fr/design/report/share/ConfusionManagerPane.java
  72. 2
      designer-realize/src/main/java/com/fr/design/style/StylePane.java
  73. 2
      designer-realize/src/main/java/com/fr/design/webattr/ReportWebWidgetConstants.java
  74. 8
      designer-realize/src/main/java/com/fr/design/webattr/ServerPrinterPane.java
  75. 2
      designer-realize/src/main/java/com/fr/design/webattr/printsettings/PageMarginSettingPane.java
  76. 2
      designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java
  77. 2
      designer-realize/src/main/java/com/fr/poly/group/PolyNameGroup.java

2
designer-base/src/main/java/com/fr/design/actions/help/SystemInfoPane.java

@ -25,7 +25,7 @@ public class SystemInfoPane extends JPanel {
return false;
}
};
tableModel.addColumn(com.fr.design.i18n.Toolkit.i18nText("Property"));
tableModel.addColumn(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Property"));
tableModel.addColumn(com.fr.design.i18n.Toolkit.i18nText("Value"));
Properties properties = System.getProperties();

2
designer-base/src/main/java/com/fr/design/condition/ConditionAttributesPane.java

@ -35,7 +35,7 @@ public abstract class ConditionAttributesPane<T> extends BasicBeanPane<T> {
JPanel propertyChangePane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane();
this.add(propertyChangePane);
propertyChangePane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Property") + ":", null));
propertyChangePane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Property") + ":", null));
// 选择要改变的属性.
JPanel addItemPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();

4
designer-base/src/main/java/com/fr/design/data/datapane/connect/JDBCDefPane.java

@ -131,13 +131,13 @@ public class JDBCDefPane extends JPanel {
JPanel userPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane();
userPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_UserName") + ":"));
JPanel userComPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
Component[][] userComComponents = {{userNameTextField, new UILabel(com.fr.design.i18n.Toolkit.i18nText("Password") + ":"), passwordTextField}};
Component[][] userComComponents = {{userNameTextField, new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Password") + ":"), passwordTextField}};
double[] userRowSize = {p};
double[] userColumnSize = {f, p, f};
userComPane = TableLayoutHelper.createCommonTableLayoutPane(userComComponents, userRowSize, userColumnSize, 4);
JPanel passwordPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane();
passwordPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Password") + ":"));
passwordPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Password") + ":"));
Component[][] components = {{dbtypePane, dbtypeComPane}, {driverPane, driverComboBox}, {urlPane, urlComPane}, {userPane, userComPane},};

2
designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewLabel.java

@ -17,7 +17,7 @@ public class PreviewLabel extends UIButton {
public PreviewLabel(Previewable previewable) {
super(BaseUtils.readIcon("/com/fr/design/images/m_file/preview.png"));
this.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Preview"));
this.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"));
this.setCursor(new Cursor(Cursor.HAND_CURSOR));
this.previewable = previewable;
this.addActionListener(new ActionListener() {

2
designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/AutoStoreProcedureTableModel.java

@ -124,7 +124,7 @@ public class AutoStoreProcedureTableModel extends StoreProcedureTableModel {
else
type = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Parameter_String");
}else if(value instanceof Integer)
type = com.fr.design.i18n.Toolkit.i18nText("Integer");
type = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Integer");
else if(value instanceof Double)
type = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Double");
else if(value instanceof Date)

2
designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/EmbeddedTableDataDefinedPane.java

@ -34,7 +34,7 @@ public class EmbeddedTableDataDefinedPane extends BasicPane{
private static String[] TYPE = {
com.fr.design.i18n.Toolkit.i18nText("String"),
com.fr.design.i18n.Toolkit.i18nText("Integer"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Integer"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Double"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Date")
};

2
designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/MultiTDTableDataPane.java

@ -140,7 +140,7 @@ public class MultiTDTableDataPane extends AbstractTableDataPane<MultiTDTableData
private class RefreshAction extends UITableEditAction {
public RefreshAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Refresh"));
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Refresh"));
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/refresh.png"));
}

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

@ -31,7 +31,7 @@ public class StoreProcedureParameterPane extends BasicPane {
private static NameObject[] nameAndValue = new NameObject[]{
new NameObject(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Cursor"), StoreProcedureConstants.CURSOR),
new NameObject(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Parameter_String"), StoreProcedureConstants.VARCHAR),
new NameObject(com.fr.design.i18n.Toolkit.i18nText("Integer"), StoreProcedureConstants.INTEGER),
new NameObject(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Integer"), StoreProcedureConstants.INTEGER),
new NameObject(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Double"), StoreProcedureConstants.DECIMAL),
new NameObject(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Date"), StoreProcedureConstants.DATE),
new NameObject(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Parameter_Boolean"), StoreProcedureConstants.BOOLEAN),
@ -131,7 +131,7 @@ public class StoreProcedureParameterPane extends BasicPane {
else
type = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Parameter_String");
}else if(value instanceof Integer)
type = com.fr.design.i18n.Toolkit.i18nText("Integer");
type = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Integer");
else if(value instanceof Double)
type = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Double");
else if(value instanceof Date)

2
designer-base/src/main/java/com/fr/design/dialog/JWizardDialog.java

@ -103,7 +103,7 @@ public class JWizardDialog extends BasicDialog {
workArea.setLayout(cardLayout);
// Buttons
buttonBack = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Previous"));
buttonBack = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Previous"));
buttonBack.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
back();

2
designer-base/src/main/java/com/fr/design/formula/TinyFormulaPane.java

@ -107,7 +107,7 @@ public class TinyFormulaPane extends BasicBeanPane<String> implements UIObserver
@Override
protected String title4PopupWindow() {
return com.fr.design.i18n.Toolkit.i18nText("Present-Formula_Present");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Present_Formula_Present");
}
@Override

212
designer-base/src/main/java/com/fr/design/gui/controlpane/CommonShortCutHandlers.java

@ -0,0 +1,212 @@
package com.fr.design.gui.controlpane;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.design.gui.ilist.JNameEdList;
import com.fr.design.gui.ilist.ListModelElement;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.ComparatorUtils;
import com.fr.stable.ArrayUtils;
import com.fr.stable.Nameable;
import javax.swing.DefaultListModel;
import javax.swing.SwingUtilities;
import java.awt.Component;
import java.util.Arrays;
import java.util.Comparator;
/**
* 存放一些通用的事件处理方法
* Created by plough on 2018/8/13.
*/
public class CommonShortCutHandlers {
ListControlPaneProvider listControlPane;
JNameEdList nameableList;
private CommonShortCutHandlers(ListControlPaneProvider listControlPane) {
this.listControlPane = listControlPane;
this.nameableList = listControlPane.getNameableList();
}
public static CommonShortCutHandlers newInstance(ListControlPaneProvider listControlPane) {
return new CommonShortCutHandlers(listControlPane);
}
public void onAddItem(NameableCreator creator) {
if (listControlPane.hasInvalid(true)) {
return;
}
Nameable nameable = creator.createNameable(listControlPane);
listControlPane.addNameable(nameable, listControlPane.getModel().getSize());
}
public void onRemoveItem() {
try {
nameableList.getCellEditor()
.stopCellEditing();
} catch (Exception ignored) {
}
if (GUICoreUtils.removeJListSelectedNodes(SwingUtilities
.getWindowAncestor((Component) listControlPane), nameableList)) {
listControlPane.checkButtonEnabled();
}
}
public void onCopyItem() {
// p:选中的值.
ListModelElement selectedValue = (ListModelElement) nameableList.getSelectedValue();
if (selectedValue == null) {
return;
}
listControlPane.getControlUpdatePane().update();
Nameable selectedNameable = selectedValue.wrapper;
// p: 用反射机制实现
try {
Nameable newNameable = (Nameable) BaseUtils.cloneObject(selectedNameable);
newNameable.setName(createUnrepeatedCopyName(selectedNameable.getName()));
listControlPane.addNameable(newNameable, listControlPane.getSelectedIndex() + 1);
} catch (Exception e) {
FRContext.getLogger().error(e.getMessage(), e);
}
}
public void onMoveUpItem() {
int selectedIndex = nameableList.getSelectedIndex();
if (selectedIndex == -1) {
return;
}
// 上移
if (selectedIndex > 0) {
DefaultListModel listModel = (DefaultListModel) nameableList.getModel();
Object selecteObj1 = listModel.get(selectedIndex - 1);
listModel.set(selectedIndex - 1, listModel.get(selectedIndex));
listModel.set(selectedIndex, selecteObj1);
nameableList.setSelectedIndex(selectedIndex - 1);
nameableList.ensureIndexIsVisible(selectedIndex - 1);
}
}
public void onMoveDownItem() {
int selectedIndex = nameableList.getSelectedIndex();
if (selectedIndex == -1) {
return;
}
if (selectedIndex < nameableList.getModel().getSize() - 1) {
DefaultListModel listModel = (DefaultListModel) nameableList
.getModel();
Object selecteObj1 = listModel.get(selectedIndex + 1);
listModel.set(selectedIndex + 1, listModel.get(selectedIndex));
listModel.set(selectedIndex, selecteObj1);
nameableList.setSelectedIndex(selectedIndex + 1);
nameableList.ensureIndexIsVisible(selectedIndex + 1);
}
}
public void onSortItem(boolean isAtoZ) {
// p:选中的值.
Object selectedValue = nameableList.getSelectedValue();
DefaultListModel listModel = (DefaultListModel) nameableList
.getModel();
Nameable[] nameableArray = new Nameable[listModel.getSize()];
if (nameableArray.length <= 0) {
return;
}
for (int i = 0; i < listModel.getSize(); i++) {
nameableArray[i] = ((ListModelElement) listModel.getElementAt(i)).wrapper;
}
// p:排序.
if (isAtoZ) {
Comparator<Nameable> nameableComparator = new Comparator<Nameable>() {
@Override
public int compare(Nameable o1, Nameable o2) {
return -ComparatorUtils.compare(o1.getName(), o2
.getName());
}
};
isAtoZ = !isAtoZ;
Arrays.sort(nameableArray, nameableComparator);
} else {
Comparator<Nameable> nameableComparator = new Comparator<Nameable>() {
@Override
public int compare(Nameable o1, Nameable o2) {
return ComparatorUtils.compare(o1.getName(), o2
.getName());
}
};
isAtoZ = !isAtoZ;
Arrays.sort(nameableArray, nameableComparator);
}
for (int i = 0; i < nameableArray.length; i++) {
listModel.set(i, new ListModelElement(nameableArray[i]));
}
// p:需要选中以前的那个值.
if (selectedValue != null) {
nameableList.setSelectedValue(selectedValue, true);
}
listControlPane.checkButtonEnabled();
// p:需要repaint.
nameableList.repaint();
}
private String createUnrepeatedCopyName(String suffix) {
DefaultListModel model = listControlPane.getModel();
String[] names = new String[model.getSize()];
for (int i = 0; i < model.size(); i++) {
names[i] = ((ListModelElement) model.get(i)).wrapper.getName();
}
String lastName = "CopyOf" + suffix;
while (ArrayUtils.contains(names, lastName)) {
lastName = "CopyOf" + lastName;
}
return lastName;
}
/**
* 生成不重复的名字
*
* @param prefix 名字前缀
* @return 名字
*/
public String createUnrepeatedName(String prefix) {
DefaultListModel model = listControlPane.getModel();
Nameable[] all = new Nameable[model.getSize()];
for (int i = 0; i < model.size(); i++) {
all[i] = ((ListModelElement) model.get(i)).wrapper;
}
// richer:生成的名字从1开始. kunsnat: 添加属性从0开始.
int count = all.length + 1;
while (true) {
String name_test = prefix + count;
boolean repeated = false;
for (int i = 0, len = model.size(); i < len; i++) {
Nameable nameable = all[i];
if (ComparatorUtils.equals(nameable.getName(), name_test)) {
repeated = true;
break;
}
}
if (!repeated) {
return name_test;
}
count++;
}
}
}

115
designer-base/src/main/java/com/fr/design/gui/controlpane/JControlPane.java

@ -1,6 +1,8 @@
package com.fr.design.gui.controlpane;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.controlpane.shortcutfactory.AbstractShortCutFactory;
import com.fr.design.gui.controlpane.shortcutfactory.OldShortCutFactory;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itoolbar.UIToolbar;
import com.fr.design.layout.FRGUIPaneFactory;
@ -17,24 +19,32 @@ import java.awt.*;
* Date: 2016/5/17
* Time: 15:07
*/
public abstract class JControlPane extends BasicPane implements UnrepeatedNameHelper {
protected static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30
protected JPanel controlUpdatePane;
private ShortCut4JControlPane[] shorts;
private NameableCreator[] creators;
abstract class JControlPane extends BasicPane implements UnrepeatedNameHelper, ShortCutListenerProvider {
private static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30
private static final String SELECT = "SELECT";
private static final String EDIT = "EDIT";
JPanel controlUpdatePane;
ShortCut4JControlPane[] shorts;
NameableCreator[] creators;
private ToolBarDef toolbarDef;
private UIToolbar toolBar;
UIToolbar toolBar;
// peter:这是整体的一个cardLayout Pane
protected CardLayout cardLayout;
protected JPanel cardPane;
protected AbstractShortCutFactory shortCutFactory;
public JControlPane() {
JControlPane() {
this.initShortCutFactory();
this.initComponentPane();
}
protected void initShortCutFactory() {
this.shortCutFactory = OldShortCutFactory.newInstance(this);
}
/**
* 生成添加按钮的NameableCreator
*
@ -46,10 +56,6 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
return shorts;
}
public void setShorts(ShortCut4JControlPane[] shorts) {
this.shorts = shorts;
}
public void setCreators(NameableCreator[] creators) {
this.creators = creators;
}
@ -89,6 +95,18 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
protected void initComponentPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.creators = this.createNameableCreators();
initCardPane();
// SplitPane
JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, getLeftPane(), cardPane);
mainSplitPane.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor()));
mainSplitPane.setOneTouchExpandable(true);
this.add(mainSplitPane, BorderLayout.CENTER);
mainSplitPane.setDividerLocation(getLeftPreferredSize());
this.checkButtonEnabled();
}
protected void initCardPane() {
this.controlUpdatePane = createControlUpdatePane();
// p: edit card layout
@ -97,20 +115,29 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
cardPane.setLayout(this.cardLayout);
// p:选择的Label
UILabel selectLabel = new UILabel();
cardPane.add(selectLabel, "SELECT");
cardPane.add(controlUpdatePane, "EDIT");
// SplitPane
JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, getLeftPane(), cardPane);
mainSplitPane.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor()));
mainSplitPane.setOneTouchExpandable(true);
cardPane.add(selectLabel, SELECT);
cardPane.add(controlUpdatePane, EDIT);
}
this.add(mainSplitPane, BorderLayout.CENTER);
mainSplitPane.setDividerLocation(getLeftPreferredSize());
this.checkButtonEnabled();
public void showEditPane() {
this.cardLayout.show(cardPane, EDIT);
}
public void showSelectPane() {
this.cardLayout.show(cardPane, SELECT);
}
protected abstract JPanel createControlUpdatePane();
protected void initToolBar() {
toolbarDef = new ToolBarDef();
for (ShortCut4JControlPane sj : shorts) {
toolbarDef.addShortCut(sj.getShortCut());
}
toolBar = ToolBarDef.createJToolBar();
toolbarDef.updateToolBar(toolBar);
}
protected JPanel getLeftPane() {
// LeftPane
JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
@ -122,12 +149,8 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
return leftPane;
}
toolbarDef = new ToolBarDef();
for (ShortCut4JControlPane sj : shorts) {
toolbarDef.addShortCut(sj.getShortCut());
}
toolBar = ToolBarDef.createJToolBar();
toolbarDef.updateToolBar(toolBar);
initToolBar();
leftPane.add(toolBar, BorderLayout.NORTH);
return leftPane;
}
@ -143,30 +166,10 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
return shorts.length * SHORT_WIDTH;
}
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
addItemShortCut(),
removeItemShortCut(),
copyItemShortCut(),
moveUpItemShortCut(),
moveDownItemShortCut(),
sortItemShortCut()
};
return shortCutFactory.createShortCuts();
}
protected abstract ShortCut4JControlPane addItemShortCut();
protected abstract ShortCut4JControlPane removeItemShortCut();
protected abstract ShortCut4JControlPane copyItemShortCut();
protected abstract ShortCut4JControlPane moveUpItemShortCut();
protected abstract ShortCut4JControlPane moveDownItemShortCut();
protected abstract ShortCut4JControlPane sortItemShortCut();
public abstract Nameable[] update();
@ -179,23 +182,15 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
public void checkButtonEnabled() {
}
protected void doBeforeRemove() {
}
protected void doAfterRemove() {
}
public NameableCreator[] creators() {
return creators == null ? new NameableCreator[0] : creators;
}
protected abstract boolean hasInvalid(boolean isAdd);
/**
* 刷新 NameableCreator
*
* @param creators 生成器
*/
* 刷新 NameableCreator
*
* @param creators 生成器
*/
public void refreshNameableCreator(NameableCreator[] creators) {
this.creators = creators;
shorts = this.createShortcuts();

112
designer-base/src/main/java/com/fr/design/gui/controlpane/JControlUpdatePane.java

@ -0,0 +1,112 @@
package com.fr.design.gui.controlpane;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.data.tabledata.tabledatapane.GlobalMultiTDTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.GlobalTreeTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.MultiTDTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.TreeTableDataPane;
import com.fr.design.gui.ilist.ListModelElement;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.ComparatorUtils;
import javax.swing.JPanel;
import java.awt.CardLayout;
/**
* Created by plough on 2018/8/13.
*/
class JControlUpdatePane extends JPanel {
private ListControlPaneProvider listControlPane;
private CardLayout card;
private JPanel cardPane;
private BasicBeanPane[] updatePanes;
private ListModelElement elEditing;
private JControlUpdatePane(ListControlPaneProvider listControlPane) {
this.listControlPane = listControlPane;
initUpdatePane();
}
public static JControlUpdatePane newInstance(ListControlPaneProvider listControlPane) {
return new JControlUpdatePane(listControlPane);
}
private void initUpdatePane() {
NameableCreator[] creators = listControlPane.creators();
if (creators == null) {
return;
}
card = new CardLayout();
cardPane = FRGUIPaneFactory.createCardLayout_S_Pane();
cardPane.setLayout(card);
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.add(cardPane);
int len = creators.length;
updatePanes = new BasicBeanPane[len];
}
public BasicBeanPane[] getUpdatePanes() {
return updatePanes;
}
public void populate() {
ListModelElement el = listControlPane.getSelectedValue();
if (el == null) {
return;
}
elEditing = el;
NameableCreator[] creators = listControlPane.creators();
for (int i = 0, len = updatePanes.length; i < len; i++) {
Object ob2Populate = creators[i].acceptObject2Populate(el.wrapper);
if (ob2Populate != null) {
if (updatePanes[i] == null) {
if (isMulti(creators[i].getUpdatePane()) || isTree(creators[i].getUpdatePane())) {
updatePanes[i] = listControlPane.createPaneByCreators(creators[i], el.wrapper.getName());
} else {
updatePanes[i] = listControlPane.createPaneByCreators(creators[i]);
}
cardPane.add(updatePanes[i], String.valueOf(i));
}
card.show(cardPane, String.valueOf(i));
updatePanes[i].populateBean(ob2Populate);
break;
}
}
}
public boolean isMulti(Class _class) {
return ComparatorUtils.equals(_class, GlobalMultiTDTableDataPane.class) || ComparatorUtils.equals(_class, MultiTDTableDataPane.class);
}
public boolean isTree(Class _class) {
return ComparatorUtils.equals(_class, GlobalTreeTableDataPane.class) || ComparatorUtils.equals(_class, TreeTableDataPane.class);
}
public void update() {
NameableCreator[] creators = listControlPane.creators();
for (int i = 0; i < updatePanes.length; i++) {
BasicBeanPane pane = updatePanes[i];
if (pane != null && pane.isVisible()) {
Object bean = pane.updateBean();
if (i < creators.length) {
creators[i].saveUpdatedBean(elEditing, bean);
}
}
}
}
public void checkValid() throws Exception {
if (updatePanes != null) {
for (int i = 0; i < updatePanes.length; i++) {
if (updatePanes[i] != null) {
updatePanes[i].checkValid();
}
}
}
}
}

634
designer-base/src/main/java/com/fr/design/gui/controlpane/JListControlPane.java

@ -1,22 +1,10 @@
package com.fr.design.gui.controlpane;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.design.actions.UpdateAction;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.data.tabledata.tabledatapane.GlobalMultiTDTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.GlobalTreeTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.MultiTDTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.TreeTableDataPane;
import com.fr.design.gui.HyperlinkFilterHelper;
import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.ilist.JNameEdList;
import com.fr.design.gui.ilist.ListModelElement;
import com.fr.design.gui.ilist.ModNameActionListener;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.menu.LineSeparator;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.ShortCut;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.ComparatorUtils;
import com.fr.general.IOUtils;
@ -25,24 +13,30 @@ import com.fr.stable.ArrayUtils;
import com.fr.stable.Nameable;
import com.fr.stable.core.PropertyChangeAdapter;
import javax.swing.*;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Arrays;
import java.util.Comparator;
public abstract class JListControlPane extends JControlPane {
public static final String LIST_NAME = "JControl_List";
public abstract class JListControlPane extends JControlPane implements ListControlPaneProvider {
private static final String LIST_NAME = "JControl_List";
protected JNameEdList nameableList;
protected int editingIndex;
protected String selectedName;
private boolean isNameRepeated = false;
private CommonShortCutHandlers commonHandlers;
private ListControlPaneHelper helper;
public JListControlPane() {
this.initComponentPane();
@ -50,7 +44,21 @@ public abstract class JListControlPane extends JControlPane {
@Override
protected JPanel createControlUpdatePane() {
return new JControlUpdatePane();
return JControlUpdatePane.newInstance(this);
}
private ListControlPaneHelper getHelper() {
if (helper == null) {
helper = ListControlPaneHelper.newInstance(this);
}
return helper;
}
private CommonShortCutHandlers getCommonHandlers() {
if (commonHandlers == null) {
commonHandlers = CommonShortCutHandlers.newInstance(this);
}
return commonHandlers;
}
/**
@ -68,7 +76,6 @@ public abstract class JListControlPane extends JControlPane {
nameableList.setName(LIST_NAME);
leftPane.add(new UIScrollPane(nameableList), BorderLayout.CENTER);
nameableList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
nameableList.addMouseListener(listMouseListener);
nameableList.addListSelectionListener(new ListSelectionListener() {
@ -87,7 +94,7 @@ public abstract class JListControlPane extends JControlPane {
});
}
public JNameEdList createJNameList() {
protected JNameEdList createJNameList() {
JNameEdList nameEdList = new JNameEdList(new DefaultListModel()) {
@Override
protected void doAfterLostFocus() {
@ -98,69 +105,13 @@ public abstract class JListControlPane extends JControlPane {
return nameEdList;
}
public void updateControlUpdatePane() {
private void updateControlUpdatePane() {
((JControlUpdatePane) controlUpdatePane).update();
}
protected void doWhenPopulate(BasicBeanPane beanPane) {
}
protected void doBeforePopulate(ListModelElement el, Object obj) {
}
@Override
protected ShortCut4JControlPane addItemShortCut() {
ShortCut addItemShortCut;
NameableCreator[] creators = creators();
if (creators.length == 1) {
addItemShortCut = new AddItemUpdateAction(creators);
} else {
addItemShortCut = new AddItemMenuDef(creators);
}
return new AbsoluteEnableShortCut(addItemShortCut);
}
@Override
protected ShortCut4JControlPane removeItemShortCut() {
return new NormalEnableShortCut(new RemoveItemAction());
}
@Override
protected ShortCut4JControlPane copyItemShortCut() {
return new NormalEnableShortCut(new CopyItemAction());
}
@Override
protected ShortCut4JControlPane moveUpItemShortCut() {
return new NormalEnableShortCut(new MoveUpItemAction());
}
@Override
protected ShortCut4JControlPane moveDownItemShortCut() {
return new NormalEnableShortCut(new MoveDownItemAction());
}
@Override
protected ShortCut4JControlPane sortItemShortCut() {
return new NormalEnableShortCut(new SortItemAction());
}
public void setNameListEditable(boolean editable) {
this.nameableList.setEditable(editable);
}
@Override
public Nameable[] update() {
java.util.List<Nameable> res = new java.util.ArrayList<Nameable>();
((JControlUpdatePane) this.controlUpdatePane).update();
DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel();
for (int i = 0, len = listModel.getSize(); i < len; i++) {
res.add(((ListModelElement) listModel.getElementAt(i)).wrapper);
}
return res.toArray(new Nameable[res.size()]);
return getHelper().update();
}
@Override
@ -186,7 +137,7 @@ public abstract class JListControlPane extends JControlPane {
*
* @param l 名字改变时的监听
*/
public void addModNameActionListener(ModNameActionListener l) {
protected void addModNameActionListener(ModNameActionListener l) {
this.nameableList.addModNameActionListener(l);
}
@ -195,7 +146,7 @@ public abstract class JListControlPane extends JControlPane {
*
* @param l 监听
*/
public void addEditingListener(PropertyChangeAdapter l) {
protected void addEditingListener(PropertyChangeAdapter l) {
this.nameableList.addEditingListner(l);
}
@ -236,9 +187,7 @@ public abstract class JListControlPane extends JControlPane {
* 获取选中的名字
*/
public String getSelectedName() {
ListModelElement el = (ListModelElement) this.nameableList.getSelectedValue();
return el == null ? null : el.wrapper.getName();
return getHelper().getSelectedName();
}
protected boolean isNameRepeated(java.util.List[] list, String name) {
@ -268,15 +217,7 @@ public abstract class JListControlPane extends JControlPane {
* @param index 序号
*/
public void addNameable(Nameable nameable, int index) {
JNameEdList nameEdList = JListControlPane.this.nameableList;
DefaultListModel model = (DefaultListModel) nameEdList.getModel();
ListModelElement el = new ListModelElement(nameable);
model.add(index, el);
nameableList.setSelectedIndex(index);
nameableList.ensureIndexIsVisible(index);
nameEdList.repaint();
getHelper().addNameable(nameable, index);
}
/**
@ -295,314 +236,54 @@ public abstract class JListControlPane extends JControlPane {
return false;
}
protected DefaultListModel getModel() {
public DefaultListModel getModel() {
return (DefaultListModel) JListControlPane.this.nameableList.getModel();
}
private String createUnrepeatedCopyName(String suffix) {
DefaultListModel model = this.getModel();
String[] names = new String[model.getSize()];
for (int i = 0; i < model.size(); i++) {
names[i] = ((ListModelElement) model.get(i)).wrapper.getName();
}
String lastName = "CopyOf" + suffix;
while (ArrayUtils.contains(names, lastName)) {
lastName = "CopyOf" + lastName;
}
return lastName;
}
/**
* 生成不重复的名字
*
* @param prefix 名字前缀
* @return 名字
*/
* 生成不重复的名字
*
* @param prefix 名字前缀
* @return 名字
*/
@Override
public String createUnrepeatedName(String prefix) {
DefaultListModel model = this.getModel();
Nameable[] all = new Nameable[model.getSize()];
for (int i = 0; i < model.size(); i++) {
all[i] = ((ListModelElement) model.get(i)).wrapper;
}
// richer:生成的名字从1开始. kunsnat: 添加属性从0开始.
int count = all.length + 1;
while (true) {
String name_test = prefix + count;
boolean repeated = false;
for (int i = 0, len = model.size(); i < len; i++) {
Nameable nameable = all[i];
if (ComparatorUtils.equals(nameable.getName(), name_test)) {
repeated = true;
break;
}
}
if (!repeated) {
return name_test;
}
count++;
}
return getCommonHandlers().createUnrepeatedName(prefix);
}
/**
* 增加项的UpdateAction
*/
protected class AddItemUpdateAction extends UpdateAction {
final NameableCreator creator;
public AddItemUpdateAction(NameableCreator[] creators) {
this.creator = creators[0];
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Action_Add"));
this.setMnemonic('A');
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png"));
}
@Override
public void actionPerformed(ActionEvent e) {
Nameable nameable = creator.createNameable(JListControlPane.this);
JListControlPane.this.addNameable(nameable, getModel().getSize());
}
@Override
public void onAddItem(NameableCreator creator) {
getCommonHandlers().onAddItem(creator);
}
/*
* 增加项的MenuDef
*/
protected class AddItemMenuDef extends MenuDef {
public AddItemMenuDef(NameableCreator[] creators) {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Action_Add"));
this.setMnemonic('A');
this.setIconPath("/com/fr/design/images/control/addPopup.png");
wrapActionListener(creators);
}
private void wrapActionListener(NameableCreator[] creators) {
for (final NameableCreator creator : creators) {
if (filterNameableCreator(creator)) {
continue;
}
boolean isTrue = ComparatorUtils.equals(creator.menuName(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Stored_Procedure")) ||
ComparatorUtils.equals(creator.menuName(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Relation_TableData")) || ComparatorUtils.equals(creator.menuName(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Multi_Dimensional_Database"));
if (isTrue) {
this.addShortCut(new LineSeparator());
}
this.addShortCut(new UpdateAction() {
{
this.setName(creator.menuName());
Icon icon = creator.menuIcon();
if (icon != null) {
this.setSmallIcon(icon);
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (hasInvalid(true)) {
return;
}
Nameable nameable = creator.createNameable(JListControlPane.this);
JListControlPane.this.addNameable(nameable, getModel().getSize());
}
});
}
}
@Override
public void onRemoveItem() {
getCommonHandlers().onRemoveItem();
}
/*
* 移除item
*/
private class RemoveItemAction extends UpdateAction {
public RemoveItemAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Action_Remove"));
this.setMnemonic('R');
this.setSmallIcon(BaseUtils
.readIcon("/com/fr/base/images/cell/control/remove.png"));
}
@Override
public void actionPerformed(ActionEvent evt) {
try {
JListControlPane.this.nameableList.getCellEditor()
.stopCellEditing();
} catch (Exception ignored) {
}
// bug:在选中一个NameObject并删除,会遗留下Name.
doBeforeRemove();
if (GUICoreUtils.removeJListSelectedNodes(SwingUtilities
.getWindowAncestor(JListControlPane.this), nameableList)) {
checkButtonEnabled();
doAfterRemove();
}
}
@Override
public void onCopyItem() {
getCommonHandlers().onCopyItem();
}
/*
* CopyItem
*/
private class CopyItemAction extends UpdateAction {
public CopyItemAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Action_Copy"));
this.setMnemonic('C');
this.setSmallIcon(BaseUtils
.readIcon("/com/fr/design/images/m_edit/copy.png"));
}
@Override
public void actionPerformed(ActionEvent evt) {
// p:选中的值.
ListModelElement selectedValue = (ListModelElement) nameableList.getSelectedValue();
if (selectedValue == null) {
return;
}
((JControlUpdatePane) controlUpdatePane).update();
Nameable selectedNameable = selectedValue.wrapper;
// p: 用反射机制实现
try {
Nameable newNameable = (Nameable) BaseUtils.cloneObject(selectedNameable);
newNameable.setName(createUnrepeatedCopyName(selectedNameable.getName()));
JListControlPane.this.addNameable(newNameable, nameableList.getSelectedIndex() + 1);
} catch (Exception e) {
FRContext.getLogger().error(e.getMessage(), e);
}
}
@Override
public void onMoveUpItem() {
getCommonHandlers().onMoveUpItem();
}
/*
* 上移Item
*/
private class MoveUpItemAction extends UpdateAction {
public MoveUpItemAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Move_Up"));
this.setMnemonic('U');
this.setSmallIcon(BaseUtils
.readIcon("/com/fr/design/images/control/up.png"));
}
@Override
public void actionPerformed(ActionEvent evt) {
int selectedIndex = nameableList.getSelectedIndex();
if (selectedIndex == -1) {
return;
}
// 上移
if (selectedIndex > 0) {
DefaultListModel listModel = (DefaultListModel) nameableList
.getModel();
Object selecteObj1 = listModel.get(selectedIndex - 1);
listModel.set(selectedIndex - 1, listModel.get(selectedIndex));
listModel.set(selectedIndex, selecteObj1);
nameableList.setSelectedIndex(selectedIndex - 1);
nameableList.ensureIndexIsVisible(selectedIndex - 1);
}
}
@Override
public void onMoveDownItem() {
getCommonHandlers().onMoveDownItem();
}
/*
* 下移Item
*/
private class MoveDownItemAction extends UpdateAction {
public MoveDownItemAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Move_Down"));
this.setMnemonic('D');
this.setSmallIcon(BaseUtils
.readIcon("/com/fr/design/images/control/down.png"));
}
@Override
public void actionPerformed(ActionEvent evt) {
int selectedIndex = nameableList.getSelectedIndex();
if (selectedIndex == -1) {
return;
}
if (selectedIndex < nameableList.getModel().getSize() - 1) {
DefaultListModel listModel = (DefaultListModel) nameableList
.getModel();
Object selecteObj1 = listModel.get(selectedIndex + 1);
listModel.set(selectedIndex + 1, listModel.get(selectedIndex));
listModel.set(selectedIndex, selecteObj1);
nameableList.setSelectedIndex(selectedIndex + 1);
nameableList.ensureIndexIsVisible(selectedIndex + 1);
}
}
@Override
public void onSortItem(boolean isAtoZ) {
getCommonHandlers().onSortItem(isAtoZ);
}
private class SortItemAction extends UpdateAction {
private boolean isAtoZ = false;
public SortItemAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Action_Sort"));
this.setMnemonic('S');
this.setSmallIcon(BaseUtils
.readIcon("/com/fr/design/images/control/sortAsc.png"));
}
@Override
public void actionPerformed(ActionEvent evt) {
// p:选中的值.
Object selectedValue = nameableList.getSelectedValue();
DefaultListModel listModel = (DefaultListModel) nameableList
.getModel();
Nameable[] nameableArray = new Nameable[listModel.getSize()];
if (nameableArray.length <= 0) {
return;
}
for (int i = 0; i < listModel.getSize(); i++) {
nameableArray[i] = ((ListModelElement) listModel.getElementAt(i)).wrapper;
}
// p:排序.
if (isAtoZ) {
Comparator<Nameable> nameableComparator = new Comparator<Nameable>() {
@Override
public int compare(Nameable o1, Nameable o2) {
return -ComparatorUtils.compare(o1.getName(), o2
.getName());
}
};
isAtoZ = !isAtoZ;
Arrays.sort(nameableArray, nameableComparator);
} else {
Comparator<Nameable> nameableComparator = new Comparator<Nameable>() {
@Override
public int compare(Nameable o1, Nameable o2) {
return ComparatorUtils.compare(o1.getName(), o2
.getName());
}
};
isAtoZ = !isAtoZ;
Arrays.sort(nameableArray, nameableComparator);
}
for (int i = 0; i < nameableArray.length; i++) {
listModel.set(i, new ListModelElement(nameableArray[i]));
}
// p:需要选中以前的那个值.
if (selectedValue != null) {
nameableList.setSelectedValue(selectedValue, true);
}
checkButtonEnabled();
// p:需要repaint.
nameableList.repaint();
}
@Override
public boolean isItemSelected() {
return getModel().getSize() > 0 && nameableList.getSelectedIndex() != -1;
}
/*
@ -649,16 +330,7 @@ public abstract class JListControlPane extends JControlPane {
*/
@Override
public void checkButtonEnabled() {
int selectedIndex = nameableList.getSelectedIndex();
if (selectedIndex == -1) {
this.cardLayout.show(cardPane, "SELECT");
} else {
this.cardLayout.show(cardPane, "EDIT");
}
for (ShortCut4JControlPane sj : getShorts()) {
sj.checkEnable();
}
getHelper().checkButtonEnabled();
}
private class NameableListCellRenderer extends
@ -690,129 +362,13 @@ public abstract class JListControlPane extends JControlPane {
}
}
public class AbsoluteEnableShortCut extends ShortCut4JControlPane {
public AbsoluteEnableShortCut(ShortCut shortCut) {
this.shortCut = shortCut;
}
/**
* 检查是否可用
*/
@Override
public void checkEnable() {
this.shortCut.setEnabled(true);
}
}
public class NormalEnableShortCut extends ShortCut4JControlPane {
public NormalEnableShortCut(ShortCut shortCut) {
this.shortCut = shortCut;
}
/**
* 检查是否可用
*/
@Override
public void checkEnable() {
this.shortCut.setEnabled(getModel()
.getSize() > 0
&& JListControlPane.this.nameableList.getSelectedIndex() != -1);
}
}
private class JControlUpdatePane extends JPanel {
private CardLayout card;
private JPanel cardPane;
private BasicBeanPane[] updatePanes;
private ListModelElement elEditing;
public JControlUpdatePane() {
initUpdatePane();
}
private void initUpdatePane() {
NameableCreator[] creators = creators();
if (creators == null) {
return;
}
card = new CardLayout();
cardPane = FRGUIPaneFactory.createCardLayout_S_Pane();
cardPane.setLayout(card);
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.add(cardPane);
int len = creators.length;
updatePanes = new BasicBeanPane[len];
}
public void populate() {
ListModelElement el = (ListModelElement) JListControlPane.this.nameableList.getSelectedValue();
if (el == null) {
return;
}
elEditing = el;
NameableCreator[] creators = creators();
for (int i = 0, len = updatePanes.length; i < len; i++) {
Object ob2Populate = creators[i].acceptObject2Populate(el.wrapper);
if (ob2Populate != null) {
if (updatePanes[i] == null) {
if (isMulti(creators[i].getUpdatePane()) || isTree(creators[i].getUpdatePane())) {
updatePanes[i] = createPaneByCreators(creators[i], el.wrapper.getName());
} else {
updatePanes[i] = createPaneByCreators(creators[i]);
}
cardPane.add(updatePanes[i], String.valueOf(i));
}
card.show(cardPane, String.valueOf(i));
doBeforePopulate(el, ob2Populate);
updatePanes[i].populateBean(ob2Populate);
doWhenPopulate(updatePanes[i]);
break;
}
}
}
public boolean isMulti(Class _class) {
return ComparatorUtils.equals(_class, GlobalMultiTDTableDataPane.class) || ComparatorUtils.equals(_class, MultiTDTableDataPane.class);
}
public boolean isTree(Class _class) {
return ComparatorUtils.equals(_class, GlobalTreeTableDataPane.class) || ComparatorUtils.equals(_class, TreeTableDataPane.class);
}
public void update() {
NameableCreator[] creators = creators();
for (int i = 0; i < updatePanes.length; i++) {
BasicBeanPane pane = updatePanes[i];
if (pane != null && pane.isVisible()) {
Object bean = pane.updateBean();
if (i < creators.length) {
creators[i].saveUpdatedBean(elEditing, bean);
}
}
}
}
public void checkValid() throws Exception {
if (updatePanes != null) {
for (int i = 0; i < updatePanes.length; i++) {
if (updatePanes[i] != null) {
updatePanes[i].checkValid();
}
}
}
}
}
protected BasicBeanPane createPaneByCreators(NameableCreator creator) {
@Override
public BasicBeanPane createPaneByCreators(NameableCreator creator) {
return Reflect.on(creator.getUpdatePane()).create().get();
}
private BasicBeanPane createPaneByCreators(NameableCreator creator, String string) {
@Override
public BasicBeanPane createPaneByCreators(NameableCreator creator, String string) {
return Reflect.on(creator.getUpdatePane()).create(string).get();
}
@ -826,35 +382,9 @@ public abstract class JListControlPane extends JControlPane {
((JControlUpdatePane) this.controlUpdatePane).checkValid();
}
private int getInValidIndex() {
BasicBeanPane[] p = ((JControlUpdatePane) controlUpdatePane).updatePanes;
if (p != null) {
for (int i = 0; i < p.length; i++) {
if (p[i] != null) {
try {
p[i].checkValid();
} catch (Exception e) {
return i;
}
}
}
}
return -1;
}
@Override
protected boolean hasInvalid(boolean isAdd) {
int idx = JListControlPane.this.getInValidIndex();
if (isAdd || nameableList.getSelectedIndex() != idx) {
try {
checkValid();
} catch (Exception exp) {
JOptionPane.showMessageDialog(JListControlPane.this, exp.getMessage());
nameableList.setSelectedIndex(idx);
return true;
}
}
return false;
public boolean hasInvalid(boolean isAdd) {
return getHelper().hasInvalid(isAdd);
}
/**
@ -862,16 +392,28 @@ public abstract class JListControlPane extends JControlPane {
*
* @param index 选中项的序列号
*/
@Override
public void setSelectedIndex(int index) {
nameableList.setSelectedIndex(index);
}
@Override
public int getSelectedIndex() {
return nameableList.getSelectedIndex();
}
/**
* 用于在list面板中过滤某些下拉选项
* @return true过滤掉这个creator
*/
protected boolean filterNameableCreator(NameableCreator creator) {
return !HyperlinkFilterHelper.whetherAddHyperlink4cell(creator.menuName());
@Override
public JNameEdList getNameableList() {
return nameableList;
}
@Override
public ListModelElement getSelectedValue() {
return (ListModelElement) this.nameableList.getSelectedValue();
}
@Override
public JControlUpdatePane getControlUpdatePane() {
return (JControlUpdatePane) controlUpdatePane;
}
}

112
designer-base/src/main/java/com/fr/design/gui/controlpane/ListControlPaneHelper.java

@ -0,0 +1,112 @@
package com.fr.design.gui.controlpane;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.gui.ilist.JNameEdList;
import com.fr.design.gui.ilist.ListModelElement;
import com.fr.stable.Nameable;
import com.fr.stable.StringUtils;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;
import java.awt.Component;
/**
* 存放一些公用的方法
* Created by plough on 2018/8/13.
*/
class ListControlPaneHelper {
private ListControlPaneProvider listControlPane;
private ListControlPaneHelper(ListControlPaneProvider listControlPane) {
this.listControlPane = listControlPane;
}
public static ListControlPaneHelper newInstance(ListControlPaneProvider listControlPane) {
return new ListControlPaneHelper(listControlPane);
}
public boolean hasInvalid(boolean isAdd) {
int idx = getInValidIndex();
if (isAdd || listControlPane.getSelectedIndex() != idx) {
try {
listControlPane.checkValid();
} catch (Exception exp) {
JOptionPane.showMessageDialog((Component) listControlPane, exp.getMessage());
listControlPane.setSelectedIndex(idx);
return true;
}
}
return false;
}
private int getInValidIndex() {
BasicBeanPane[] p = listControlPane.getControlUpdatePane().getUpdatePanes();
if (p != null) {
for (int i = 0; i < p.length; i++) {
if (p[i] != null) {
try {
p[i].checkValid();
} catch (Exception e) {
return i;
}
}
}
}
return -1;
}
public Nameable[] update() {
java.util.List<Nameable> res = new java.util.ArrayList<Nameable>();
listControlPane.getControlUpdatePane().update();
DefaultListModel listModel = listControlPane.getModel();
for (int i = 0, len = listModel.getSize(); i < len; i++) {
res.add(((ListModelElement) listModel.getElementAt(i)).wrapper);
}
return res.toArray(new Nameable[res.size()]);
}
/**
* 获取选中的名字
*/
public String getSelectedName() {
ListModelElement el = listControlPane.getSelectedValue();
return el == null ? StringUtils.EMPTY : el.wrapper.getName();
}
/**
* 添加 Nameable
*
* @param nameable 添加的Nameable
* @param index 序号
*/
public void addNameable(Nameable nameable, int index) {
JNameEdList nameableList = listControlPane.getNameableList();
DefaultListModel model = listControlPane.getModel();
ListModelElement el = new ListModelElement(nameable);
model.add(index, el);
nameableList.setSelectedIndex(index);
nameableList.ensureIndexIsVisible(index);
nameableList.repaint();
}
/**
* 检查按钮可用状态 Check button enabled.
*/
public void checkButtonEnabled() {
int selectedIndex = listControlPane.getSelectedIndex();
if (selectedIndex == -1) {
listControlPane.showSelectPane();
} else {
listControlPane.showEditPane();
}
for (ShortCut4JControlPane sj : listControlPane.getShorts()) {
sj.checkEnable();
}
}
}

35
designer-base/src/main/java/com/fr/design/gui/controlpane/ListControlPaneProvider.java

@ -0,0 +1,35 @@
package com.fr.design.gui.controlpane;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.gui.ilist.JNameEdList;
import com.fr.design.gui.ilist.ListModelElement;
import com.fr.stable.Nameable;
import javax.swing.DefaultListModel;
/**
* Created by plough on 2018/8/13.
*/
public interface ListControlPaneProvider extends UnrepeatedNameHelper {
NameableCreator[] creators();
BasicBeanPane createPaneByCreators(NameableCreator creator);
BasicBeanPane createPaneByCreators(NameableCreator creator, String string);
DefaultListModel getModel();
boolean hasInvalid(boolean isAdd);
void addNameable(Nameable nameable, int index);
JNameEdList getNameableList();
int getSelectedIndex();
void setSelectedIndex(int idx);
ListModelElement getSelectedValue();
void checkButtonEnabled();
JControlUpdatePane getControlUpdatePane();
// BasicBeanPane[] getUpdatePanes();
/**
* 检查是否符合规范
* @throws Exception
*/
void checkValid() throws Exception;
void showSelectPane();
void showEditPane();
ShortCut4JControlPane[] getShorts();
}

2
designer-base/src/main/java/com/fr/design/gui/controlpane/ObjectJControlPane.java

@ -22,7 +22,7 @@ public abstract class ObjectJControlPane extends JListControlPane {
}
@Override
protected BasicBeanPane createPaneByCreators(NameableCreator creator) {
public BasicBeanPane createPaneByCreators(NameableCreator creator) {
try {
return Reflect.on(creator.getUpdatePane()).create(object).get();
} catch (Exception e) {

6
designer-base/src/main/java/com/fr/design/gui/controlpane/ObjectUIControlPane.java

@ -10,17 +10,13 @@ import com.fr.design.beans.BasicBeanPane;
public abstract class ObjectUIControlPane extends UIListControlPane {
private Object object;
public ObjectUIControlPane() {
this(null);
}
public ObjectUIControlPane(Object object) {
super();
this.object = object;
}
@Override
protected BasicBeanPane createPaneByCreators(NameableCreator creator) {
public BasicBeanPane createPaneByCreators(NameableCreator creator) {
try {
if (object == null) {
return super.createPaneByCreators(creator);

15
designer-base/src/main/java/com/fr/design/gui/controlpane/ShortCutListenerProvider.java

@ -0,0 +1,15 @@
package com.fr.design.gui.controlpane;
/**
* Created by plough on 2018/8/12.
*/
public interface ShortCutListenerProvider {
void onAddItem(NameableCreator creator);
void onRemoveItem();
void onCopyItem();
void onMoveUpItem();
void onMoveDownItem();
void onSortItem(boolean isAtoZ);
boolean isItemSelected();
NameableCreator[] creators();
}

203
designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java

@ -2,7 +2,7 @@ package com.fr.design.gui.controlpane;
import com.fr.base.chart.BasePlot;
import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.controlpane.shortcutfactory.ShortCutFactory;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itoolbar.UIToolBarUI;
import com.fr.design.gui.itoolbar.UIToolbar;
@ -11,10 +11,8 @@ import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.menu.ShortCut;
import com.fr.design.menu.ToolBarDef;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.stable.ArrayUtils;
import com.fr.stable.Nameable;
import com.fr.stable.StringUtils;
import javax.swing.BorderFactory;
@ -25,7 +23,6 @@ import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.border.EmptyBorder;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
@ -49,85 +46,30 @@ import java.awt.event.WindowEvent;
/**
* Created by plough on 2017/7/21.
*/
public abstract class UIControlPane extends BasicPane implements UnrepeatedNameHelper {
protected static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30
protected JPanel controlUpdatePane;
private ShortCut4JControlPane[] shorts;
private NameableCreator[] creators;
private ToolBarDef toolbarDef;
private UIToolbar toolBar;
abstract class UIControlPane extends JControlPane {
private UIToolbar topToolBar;
protected Window popupEditDialog;
// peter:这是整体的一个cardLayout Pane
protected CardLayout cardLayout;
protected JPanel cardPane;
protected BasePlot plot;
private static final int TOP_TOOLBAR_HEIGHT = 20;
private static final int TOP_TOOLBAR_WIDTH = 156; // 可能因为用了tablelayout,要比其他地方多一个像素,看起来才正常
private static final int TOP_TOOLBAR_WIDTH_SHORT = 76;
public UIControlPane() {
this.initComponentPane();
UIControlPane() {
super();
}
public UIControlPane(BasePlot plot) {
UIControlPane(BasePlot plot) {
super();
this.plot = plot;
this.initComponentPane();
}
/**
* 生成添加按钮的NameableCreator
*
* @return 按钮的NameableCreator
*/
public abstract NameableCreator[] createNameableCreators();
public ShortCut4JControlPane[] getShorts() {
return shorts;
}
public void setShorts(ShortCut4JControlPane[] shorts) {
this.shorts = shorts;
}
public void setCreators(NameableCreator[] creators) {
this.creators = creators;
}
public ToolBarDef getToolbarDef() {
return toolbarDef;
}
public void setToolbarDef(ToolBarDef toolbarDef) {
this.toolbarDef = toolbarDef;
}
public UIToolbar getToolBar() {
return toolBar;
}
public void setToolBar(UIToolbar toolBar) {
this.toolBar = toolBar;
}
public CardLayout getCardLayout() {
return cardLayout;
}
public void setCardLayout(CardLayout cardLayout) {
this.cardLayout = cardLayout;
}
public JPanel getCardPane() {
return cardPane;
}
public abstract void saveSettings();
public void setCardPane(JPanel cardPane) {
this.cardPane = cardPane;
@Override
protected void initShortCutFactory() {
this.shortCutFactory = ShortCutFactory.newInstance(this);
}
public abstract void saveSettings();
// 是否使用新样式
protected boolean isNewStyle() {
return true;
@ -136,16 +78,9 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH
protected void initComponentPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.creators = this.createNameableCreators();
this.controlUpdatePane = createControlUpdatePane();
// p: edit card layout
this.cardLayout = new CardLayout();
cardPane = FRGUIPaneFactory.createCardLayout_S_Pane();
cardPane.setLayout(this.cardLayout);
// p:选择的Label
UILabel selectLabel = new UILabel();
cardPane.add(selectLabel, "SELECT");
cardPane.add(controlUpdatePane, "EDIT");
initCardPane();
if (isNewStyle()) {
getPopupEditDialog(cardPane);
this.add(getLeftPane(), BorderLayout.CENTER);
@ -169,11 +104,22 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH
this.checkButtonEnabled();
}
protected void getPopupEditDialog(JPanel cardPane) {
private void getPopupEditDialog(JPanel cardPane) {
popupEditDialog = new PopupEditDialog(cardPane);
}
protected abstract JPanel createControlUpdatePane();
@Override
protected void initToolBar() {
super.initToolBar();
toolBar.setUI(new UIToolBarUI() {
@Override
public void paint(Graphics g, JComponent c) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.WHITE);
g2.fillRect(0, 0, c.getWidth(), c.getHeight());
}
});
}
protected JPanel getLeftPane() {
// LeftPane
@ -188,20 +134,8 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH
return leftPane;
}
toolbarDef = new ToolBarDef();
for (ShortCut4JControlPane sj : shorts) {
toolbarDef.addShortCut(sj.getShortCut());
}
toolBar = ToolBarDef.createJToolBar();
toolBar.setUI(new UIToolBarUI() {
@Override
public void paint(Graphics g, JComponent c) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.WHITE);
g2.fillRect(0, 0, c.getWidth(), c.getHeight());
}
});
toolbarDef.updateToolBar(toolBar);
initToolBar();
// 封装一层,加边框
JPanel toolBarPane = new JPanel(new BorderLayout());
toolBarPane.add(toolBar, BorderLayout.CENTER);
@ -220,7 +154,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH
});
topToolBar.setBorder(null);
topToolBar.setLayout(new BorderLayout());
ShortCut addItem = addItemShortCut().getShortCut();
ShortCut addItem = shortCutFactory.addItemShortCut().getShortCut();
addItem.intoJToolBar(topToolBar);
JPanel leftTopPane = getLeftTopPane(topToolBar);
@ -249,85 +183,22 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH
return "add item ";
}
/**
* 初始化左边面板
*/
protected void initLeftPane(JPanel leftPane) {
}
protected int getLeftPreferredSize() {
return shorts.length * SHORT_WIDTH;
}
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
copyItemShortCut(),
moveUpItemShortCut(),
moveDownItemShortCut(),
sortItemShortCut(),
removeItemShortCut()
};
// return AbstractShortCutFactory.getInstance(this).createNewShortCuts();
return shortCutFactory.createShortCuts();
}
protected abstract ShortCut4JControlPane addItemShortCut();
protected abstract ShortCut4JControlPane removeItemShortCut();
protected abstract ShortCut4JControlPane copyItemShortCut();
protected abstract ShortCut4JControlPane moveUpItemShortCut();
protected abstract ShortCut4JControlPane moveDownItemShortCut();
protected abstract ShortCut4JControlPane sortItemShortCut();
public abstract Nameable[] update();
public void populate(Nameable[] nameableArray) {
}
/**
* 检查按钮可用状态 Check button enabled.
*/
public void checkButtonEnabled() {
}
protected void doBeforeRemove() {
}
protected void doAfterRemove() {
}
public NameableCreator[] creators() {
return creators == null ? new NameableCreator[0] : creators;
}
protected abstract boolean hasInvalid(boolean isAdd);
/**
* 刷新 NameableCreator
*
* @param creators 生成器
*/
public void refreshNameableCreator(NameableCreator[] creators) {
this.creators = creators;
shorts = this.createShortcuts();
toolbarDef.clearShortCuts();
for (ShortCut4JControlPane sj : shorts) {
toolbarDef.addShortCut(sj.getShortCut());
}
toolbarDef.updateToolBar(toolBar);
toolBar.validate();
toolBar.repaint();
super.refreshNameableCreator(creators);
// 顶部按钮
topToolBar.removeAll();
ShortCut addItem = addItemShortCut().getShortCut();
ShortCut addItem = shortCutFactory.addItemShortCut().getShortCut();
addItem.intoJToolBar(topToolBar);
topToolBar.validate();
this.controlUpdatePane = createControlUpdatePane();//REPORT-4841 刷新一下编辑面板
@ -337,13 +208,13 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH
}
// 点击"编辑"按钮,弹出面板
protected class PopupEditDialog extends JDialog {
class PopupEditDialog extends JDialog {
private JComponent editPane;
private PopupToolPane popupToolPane;
private static final int WIDTH = 570;
private static final int HEIGHT = 490;
public PopupEditDialog(JComponent pane) {
PopupEditDialog(JComponent pane) {
super(DesignerContext.getDesignerFrame());
setUndecorated(true);
pane.setBorder(BorderFactory.createEmptyBorder(20, 10, 10, 10));
@ -475,11 +346,11 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH
}
};
public PopupToolPane(JDialog parentDialog) {
PopupToolPane(JDialog parentDialog) {
this(StringUtils.EMPTY, parentDialog);
}
public PopupToolPane(String title, JDialog parentDialog) {
PopupToolPane(String title, JDialog parentDialog) {
super();
this.parentDialog = parentDialog;
originColor = UIConstants.DIALOG_TITLEBAR_BACKGROUND;

880
designer-base/src/main/java/com/fr/design/gui/controlpane/UIListControlPane.java

File diff suppressed because it is too large Load Diff

179
designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/AbstractShortCutFactory.java

@ -0,0 +1,179 @@
package com.fr.design.gui.controlpane.shortcutfactory;
import com.fr.base.BaseUtils;
import com.fr.design.actions.UpdateAction;
import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.design.gui.controlpane.ShortCut4JControlPane;
import com.fr.design.gui.controlpane.ShortCutListenerProvider;
import com.fr.design.menu.ShortCut;
import com.fr.general.Inter;
import java.awt.event.ActionEvent;
/**
* 生成 ShortCut 的抽象工厂
* Created by plough on 2018/8/2.
*/
public abstract class AbstractShortCutFactory {
protected ShortCutListenerProvider listener;
AbstractShortCutFactory(ShortCutListenerProvider listener) {
setListener(listener);
}
/**
* 生成一组默认的 ShortCut
*/
abstract public ShortCut4JControlPane[] createShortCuts();
abstract public ShortCut createAddItemUpdateAction(NameableCreator[] creator);
abstract public ShortCut createAddItemMenuDef(NameableCreator[] creator);
public ShortCut4JControlPane addItemShortCut() {
ShortCut addItemShortCut;
NameableCreator[] creators = listener.creators();
if (creators.length == 1) {
addItemShortCut = createAddItemUpdateAction(creators);
} else {
addItemShortCut = createAddItemMenuDef(creators);
}
return new AbsoluteEnableShortCut(addItemShortCut);
}
public ShortCut4JControlPane removeItemShortCut() {
return new NormalEnableShortCut(new RemoveItemAction());
}
public ShortCut4JControlPane copyItemShortCut() {
return new NormalEnableShortCut(new CopyItemAction());
}
public ShortCut4JControlPane moveUpItemShortCut() {
return new NormalEnableShortCut(new MoveUpItemAction());
}
public ShortCut4JControlPane moveDownItemShortCut() {
return new NormalEnableShortCut(new MoveDownItemAction());
}
public ShortCut4JControlPane sortItemShortCut() {
return new NormalEnableShortCut(new SortItemAction());
}
public void setListener(ShortCutListenerProvider listener) {
this.listener = listener;
}
private class AbsoluteEnableShortCut extends ShortCut4JControlPane {
AbsoluteEnableShortCut(ShortCut shortCut) {
this.shortCut = shortCut;
}
/**
* 检查是否可用
*/
@Override
public void checkEnable() {
this.shortCut.setEnabled(true);
}
}
private class NormalEnableShortCut extends ShortCut4JControlPane {
NormalEnableShortCut(ShortCut shortCut) {
this.shortCut = shortCut;
}
/**
* 检查是否可用
*/
@Override
public void checkEnable() {
this.shortCut.setEnabled(listener.isItemSelected());
}
}
/*
* 移除item
*/
private class RemoveItemAction extends UpdateAction {
RemoveItemAction() {
this.setName(Inter.getLocText("FR-Action_Remove"));
this.setMnemonic('R');
this.setSmallIcon(BaseUtils
.readIcon("/com/fr/base/images/cell/control/remove.png"));
}
@Override
public void actionPerformed(ActionEvent evt) {
listener.onRemoveItem();
}
}
/*
* CopyItem
*/
private class CopyItemAction extends UpdateAction {
CopyItemAction() {
this.setName(Inter.getLocText("FR-Action_Copy"));
this.setMnemonic('C');
this.setSmallIcon(BaseUtils
.readIcon("/com/fr/design/images/m_edit/copy.png"));
}
@Override
public void actionPerformed(ActionEvent evt) {
listener.onCopyItem();
}
}
/*
* 上移Item
*/
private class MoveUpItemAction extends UpdateAction {
MoveUpItemAction() {
this.setName(Inter.getLocText("Utils-Move_Up"));
this.setMnemonic('U');
this.setSmallIcon(BaseUtils
.readIcon("/com/fr/design/images/control/up.png"));
}
@Override
public void actionPerformed(ActionEvent evt) {
listener.onMoveUpItem();
}
}
/*
* 下移Item
*/
private class MoveDownItemAction extends UpdateAction {
MoveDownItemAction() {
this.setName(Inter.getLocText("Utils-Move_Down"));
this.setMnemonic('D');
this.setSmallIcon(BaseUtils
.readIcon("/com/fr/design/images/control/down.png"));
}
@Override
public void actionPerformed(ActionEvent evt) {
listener.onMoveDownItem();
}
}
private class SortItemAction extends UpdateAction {
private boolean isAtoZ = false;
SortItemAction() {
this.setName(Inter.getLocText("FR-Action_Sort"));
this.setMnemonic('S');
this.setSmallIcon(BaseUtils
.readIcon("/com/fr/design/images/control/sortAsc.png"));
}
@Override
public void actionPerformed(ActionEvent evt) {
listener.onSortItem(isAtoZ);
}
}
}

112
designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/OldShortCutFactory.java

@ -0,0 +1,112 @@
package com.fr.design.gui.controlpane.shortcutfactory;
import com.fr.base.BaseUtils;
import com.fr.design.actions.UpdateAction;
import com.fr.design.gui.HyperlinkFilterHelper;
import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.design.gui.controlpane.ShortCut4JControlPane;
import com.fr.design.gui.controlpane.ShortCutListenerProvider;
import com.fr.design.menu.LineSeparator;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.ShortCut;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import javax.swing.Icon;
import java.awt.event.ActionEvent;
/**
* Created by plough on 2018/8/13.
*/
public class OldShortCutFactory extends AbstractShortCutFactory {
private OldShortCutFactory(ShortCutListenerProvider listenerProvider) {
super(listenerProvider);
}
public static OldShortCutFactory newInstance(ShortCutListenerProvider listenerProvider) {
return new OldShortCutFactory(listenerProvider);
}
@Override
public ShortCut4JControlPane[] createShortCuts() {
return new ShortCut4JControlPane[]{
addItemShortCut(),
removeItemShortCut(),
copyItemShortCut(),
moveUpItemShortCut(),
moveDownItemShortCut(),
sortItemShortCut()
};
}
@Override
public ShortCut createAddItemUpdateAction(NameableCreator[] creators) {
return new AddItemUpdateAction(creators);
}
@Override
public ShortCut createAddItemMenuDef(NameableCreator[] creators) {
return new AddItemMenuDef(creators);
}
/**
* 增加项的UpdateAction
*/
protected class AddItemUpdateAction extends UpdateAction {
final NameableCreator creator;
public AddItemUpdateAction(NameableCreator[] creators) {
this.creator = creators[0];
this.setName(Inter.getLocText("FR-Action_Add"));
this.setMnemonic('A');
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png"));
}
@Override
public void actionPerformed(ActionEvent e) {
listener.onAddItem(creator);
}
}
/*
* 增加项的MenuDef
*/
private class AddItemMenuDef extends MenuDef {
AddItemMenuDef(NameableCreator[] creators) {
this.setName(Inter.getLocText("FR-Action_Add"));
this.setMnemonic('A');
this.setIconPath("/com/fr/design/images/control/addPopup.png");
wrapActionListener(creators);
}
private void wrapActionListener(NameableCreator[] creators) {
for (final NameableCreator creator : creators) {
if (!HyperlinkFilterHelper.whetherAddHyperlink4cell(creator.menuName())) {
continue;
}
boolean isTrue = ComparatorUtils.equals(creator.menuName(), Inter.getLocText("Datasource-Stored_Procedure")) ||
ComparatorUtils.equals(creator.menuName(), Inter.getLocText("DS-Relation_TableData")) || ComparatorUtils.equals(creator.menuName(), Inter.getLocText("DS-Multi_Dimensional_Database"));
if (isTrue) {
this.addShortCut(new LineSeparator());
}
this.addShortCut(new UpdateAction() {
{
this.setName(creator.menuName());
Icon icon = creator.menuIcon();
if (icon != null) {
this.setSmallIcon(icon);
}
}
@Override
public void actionPerformed(ActionEvent e) {
listener.onAddItem(creator);
}
});
}
}
}
}

171
designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/ShortCutFactory.java

@ -0,0 +1,171 @@
package com.fr.design.gui.controlpane.shortcutfactory;
import com.fr.base.BaseUtils;
import com.fr.design.actions.UpdateAction;
import com.fr.design.actions.core.ActionFactory;
import com.fr.design.gui.HyperlinkFilterHelper;
import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.design.gui.controlpane.ShortCut4JControlPane;
import com.fr.design.gui.controlpane.ShortCutListenerProvider;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.menu.LineSeparator;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.ShortCut;
import com.fr.general.ComparatorUtils;
import com.fr.stable.StringUtils;
import javax.swing.AbstractButton;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JComponent;
import java.awt.event.ActionEvent;
/**
* Created by plough on 2018/8/13.
*/
public class ShortCutFactory extends AbstractShortCutFactory {
protected ShortCutFactory(ShortCutListenerProvider listenerProvider) {
super(listenerProvider);
}
public static ShortCutFactory newInstance(ShortCutListenerProvider listenerProvider) {
return new ShortCutFactory(listenerProvider);
}
@Override
public ShortCut4JControlPane[] createShortCuts() {
return new ShortCut4JControlPane[]{
copyItemShortCut(),
moveUpItemShortCut(),
moveDownItemShortCut(),
sortItemShortCut(),
removeItemShortCut()
};
}
@Override
public ShortCut createAddItemUpdateAction(NameableCreator[] creators) {
return new AddItemUpdateAction(creators);
}
@Override
public ShortCut createAddItemMenuDef(NameableCreator[] creators) {
return new AddItemMenuDef(creators);
}
/**
* 增加项的UpdateAction
*/
protected class AddItemUpdateAction extends UpdateAction {
final NameableCreator creator;
public AddItemUpdateAction(NameableCreator[] creators) {
this.creator = creators[0];
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Action_Add"));
this.setMnemonic('A');
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png"));
}
/**
* Gets component on toolbar.
*
* @return the created components on toolbar.
*/
@Override
public JComponent createToolBarComponent() {
Object object = this.getValue(UIButton.class.getName());
if (!(object instanceof AbstractButton)) {
// 直接使用默认UI
UIButton button = new UIButton();
// 添加一个名字作为自动化测试用
button.setName(getName());
//设置属性.
Integer mnemonicInteger = (Integer) this.getValue(Action.MNEMONIC_KEY);
if (mnemonicInteger != null) {
button.setMnemonic((char) mnemonicInteger.intValue());
}
button.setIcon((Icon) this.getValue(Action.SMALL_ICON));
button.addActionListener(this);
button.registerKeyboardAction(this, this.getAccelerator(), JComponent.WHEN_IN_FOCUSED_WINDOW);
this.putValue(UIButton.class.getName(), button);
button.setText(StringUtils.EMPTY);
button.setEnabled(this.isEnabled());
//peter:产生tooltip
button.setToolTipText(ActionFactory.createButtonToolTipText(this));
object = button;
}
return (JComponent) object;
}
@Override
public void actionPerformed(ActionEvent e) {
listener.onAddItem(creator);
}
}
/*
* 增加项的MenuDef
*/
protected class AddItemMenuDef extends MenuDef {
public AddItemMenuDef(NameableCreator[] creators) {
super(true);
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Action_Add"));
this.setMnemonic('A');
this.setIconPath("/com/fr/design/images/control/addPopup.png");
wrapActionListener(creators);
}
/**
* 生成UIButton
* @return 菜单按钮
*/
public UIButton createUIButton() {
createdButton = super.createUIButton();
// 此按钮单独抽出,不应使用工具栏外观
if (!createdButton.isOpaque()) {
createdButton.setOpaque(true);
createdButton.setNormalPainted(true);
createdButton.setBorderPaintedOnlyWhenPressed(false);
}
return createdButton;
}
private void wrapActionListener(NameableCreator[] creators) {
for (final NameableCreator creator : creators) {
if (!whetherAdd(creator.menuName())) {
continue;
}
boolean isTrue = ComparatorUtils.equals(creator.menuName(), com.fr.design.i18n.Toolkit.i18nText("Datasource-Stored_Procedure")) ||
ComparatorUtils.equals(creator.menuName(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Relation_TableData")) || ComparatorUtils.equals(creator.menuName(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Multi_Dimensional_Database"));
if (isTrue) {
this.addShortCut(new LineSeparator());
}
this.addShortCut(new UpdateAction() {
{
this.setName(creator.menuName());
Icon icon = creator.menuIcon();
if (icon != null) {
this.setSmallIcon(icon);
}
}
@Override
public void actionPerformed(ActionEvent e) {
listener.onAddItem(creator);
}
});
}
}
protected boolean whetherAdd(String itemName){
return HyperlinkFilterHelper.whetherAddHyperlink4cell(itemName);
}
}
}

2
designer-base/src/main/java/com/fr/design/gui/frpane/EditingStringListPane.java

@ -57,7 +57,7 @@ public abstract class EditingStringListPane extends BasicBeanPane<List<String>>
addButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Add"));
editButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Modify"));
removeButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Remove"));
removeButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remove"));
moveUpButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Move_Up"));
moveDownButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Move_Down"));

2
designer-base/src/main/java/com/fr/design/gui/frpane/ImgChoosePane.java

@ -34,7 +34,7 @@ public class ImgChoosePane extends BasicPane {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
JPanel previewContainner = new JPanel();
previewContainner.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Preview")));
previewContainner.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview")));
previewPane = new ImagePreviewPane();
previewContainner.add(previewPane);

2
designer-base/src/main/java/com/fr/design/gui/frpane/ImgChooseWrapper.java

@ -148,7 +148,7 @@ public class ImgChooseWrapper {
imageSizeLabel.setText(StringUtils.EMPTY);
} else {
imageSizeLabel.setText(selectImage.getWidth(null) + "x"
+ selectImage.getHeight(null) + com.fr.design.i18n.Toolkit.i18nText("px"));
+ selectImage.getHeight(null) + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Px"));
}
}
}

4
designer-base/src/main/java/com/fr/design/gui/frpane/ObjectProperiesPane.java

@ -29,7 +29,7 @@ public class ObjectProperiesPane extends BasicBeanPane<ListMap> {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
JPanel buttonPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
this.addButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Add") + " " +com.fr.design.i18n.Toolkit.i18nText("Property"));
this.addButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Add") + " " +com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Property"));
buttonPane.add(this.addButton, BorderLayout.WEST);
this.add(buttonPane, BorderLayout.NORTH);
@ -124,7 +124,7 @@ public class ObjectProperiesPane extends BasicBeanPane<ListMap> {
this.setLayout(FRGUIPaneFactory.createLabelFlowLayout());
UIButton cancel = new UIButton(BaseUtils.readIcon("/com/fr/base/images/cell/control/remove.png"));
cancel.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Remove"));
cancel.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remove"));
cancel.addActionListener(cancleListener);
cancel.setMargin(new Insets(0, 0, 0, 0));
this.add(cancel);

2
designer-base/src/main/java/com/fr/design/gui/frpane/UITabbedPane.java

@ -113,7 +113,7 @@ public class UITabbedPane extends JTabbedPane{
* @param i tab索引
*/
public void doRemoveTab(int i){
int re = JOptionPane.showConfirmDialog(SwingUtilities.getWindowAncestor(UITabbedPane.this), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Sure_To_Delete")+ "?", com.fr.design.i18n.Toolkit.i18nText("Remove")
int re = JOptionPane.showConfirmDialog(SwingUtilities.getWindowAncestor(UITabbedPane.this), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Sure_To_Delete")+ "?", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remove")
, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (re == JOptionPane.OK_OPTION) {
super.removeTabAt(i);

61
designer-base/src/main/java/com/fr/design/gui/ilist/JNameEdList.java

@ -22,7 +22,6 @@ import java.util.ArrayList;
import java.util.Vector;
public class JNameEdList extends UIList implements CellEditorListener {
private static final int TEST_LIST_LENTH = 20;
private static final int ICON_WIDTH = 20;
private boolean editable = true;
@ -232,7 +231,7 @@ public class JNameEdList extends UIList implements CellEditorListener {
}
Rectangle rect = this.getCellBounds(index, index);
// alex:所有的JNameEdList都有Icon,空出前面20 * 20的位置就是放的Icon
rect.setRect(createRect(rect, ICON_WIDTH));
rect.setRect(createRect(rect, getIconWidth()));
editorComp.setBounds(rect);
add(editorComp);
@ -247,6 +246,10 @@ public class JNameEdList extends UIList implements CellEditorListener {
return true;
}
public int getIconWidth() {
return ICON_WIDTH;
}
public Rectangle createRect(Rectangle rect, int iconWidth) {
return new Rectangle(rect.x + iconWidth, rect.y, rect.width - iconWidth, rect.height);
}
@ -301,9 +304,14 @@ public class JNameEdList extends UIList implements CellEditorListener {
String name = StringUtils.isBlank(value.toString()) ? oldName : value.toString();
setNameAt(name, editingIndex);
removeComp();
doAfterStopEditing();
}
}
protected void doAfterStopEditing() {
// default: do nothing
}
public String[] getAllNames() {
int length = this.getModel().getSize();
String[] names = new String[length];
@ -335,53 +343,4 @@ public class JNameEdList extends UIList implements CellEditorListener {
editorComp = null;
repaint(cellRect);
}
/**
* 主函数
*
* @param args 参数
*/
public static void main(String... args) {
JFrame f = new JFrame();
JPanel c = (JPanel) f.getContentPane();
c.setLayout(new BorderLayout());
ListModelElement[] data = new ListModelElement[TEST_LIST_LENTH];
for (int i = 0; i < TEST_LIST_LENTH; i++) {
data[i] = new ListModelElement(new NameObject(i + 1 + "", i));
}
final JNameEdList list = new JNameEdList(data);
list.setEditable(true);
list.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent evt) {
list.stopEditing();
if (evt.getClickCount() >= 2
&& SwingUtilities.isLeftMouseButton(evt)) {
list.editItemAt(list.getSelectedIndex());
}
}
})
;
list.setCellEditor(new DefaultListCellEditor(new UITextField()));
list.setCellRenderer(new NameableListCellRenderer());
c.add(list, BorderLayout.CENTER);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setSize(400, 600);
f.setVisible(true);
}
private static class NameableListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof Nameable) {
Nameable wrappee = (Nameable) value;
this.setText(wrappee.getName());
}
return this;
}
}
}

386
designer-base/src/main/java/com/fr/design/gui/ilist/UINameEdList.java

@ -1,163 +1,21 @@
package com.fr.design.gui.ilist;
import com.fr.base.Utils;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.general.NameObject;
import com.fr.stable.Nameable;
import com.fr.stable.StringUtils;
import com.fr.stable.core.PropertyChangeAdapter;
import javax.swing.*;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.ListModel;
import java.awt.Point;
/**
* Created by plough on 2017/7/23.
*/
public class UINameEdList extends UIList implements CellEditorListener {
private static final int TEST_LIST_LENTH = 20;
public class UINameEdList extends JNameEdList {
private static final int BUTTON_WIDTH = 25;
private boolean editable = true;
// kunsnat: 是否强制ListName是数字 (int型)
private boolean isNameShouldNumber = false;
transient protected ListCellEditor cellEditor;
transient protected Component editorComp;
transient protected int editingIndex;
private PropertyChangeAdapter editingListner;
private java.util.List<ModNameActionListener> ll = new ArrayList<ModNameActionListener>();
public UINameEdList(ListModel dataModel) {
protected UINameEdList(ListModel dataModel) {
super(dataModel);
}
public UINameEdList(final Object[] listData) {
super(listData);
}
public UINameEdList(final Vector<?> listData) {
super(listData);
}
public UINameEdList() {
super();
}
/*
* Sets是否可编辑
*/
public void setEditable(boolean editable) {
this.editable = editable;
}
/**
* 是否可编辑
*
* @return 是则返回true
*/
public boolean isEditable() {
return this.editable;
}
public void setNameShouldNumber(boolean isNameShouldNumber) {
this.isNameShouldNumber = isNameShouldNumber;
}
/**
* 是否强制ListName是数字 (int型)
*
* @return 是则返回true
*/
public boolean isNameShouldNumber() {
return isNameShouldNumber;
}
/**
* 添加名字改变时的listener
*
* @param l 监听器
*/
public void addModNameActionListener(ModNameActionListener l) {
ll.add(l);
}
/**
* 编辑时的监听器
*
* @param l 监听器
*/
public void addEditingListner(PropertyChangeAdapter l) {
this.editingListner = l;
}
/**
* 移除某名字改变时的listener
*
* @param l 监听器
*/
public void removeModNameActionListener(ModNameActionListener l) {
ll.remove(l);
}
public ListCellEditor getCellEditor() {
if (cellEditor == null) {
UITextField editField = new UITextField();
if (editingListner != null) {
editField.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
editingListner.propertyChange();
}
@Override
public void focusGained(FocusEvent e) {
// TODO Auto-generated method stub
}
});
}
cellEditor = new DefaultListCellEditor(editField) {
public boolean stopCellEditing() {
boolean isTrue = super.stopCellEditing();
stopEditing();
return isTrue;
}
};
cellEditor.addCellEditorListener(this);
}
return cellEditor;
}
protected void doAfterLostFocus() {
}
public void setCellEditor(ListCellEditor editor) {
this.cellEditor = editor;
}
/*
* 取得index节点的名字
*/
public String getNameAt(int index) {
Nameable nameable = ((ListModelElement) getModel().getElementAt(index)).wrapper;
if (nameable != null) {
return nameable.getName();
}
return null;
}
public Object getType(int index) {
Nameable nameable = ((ListModelElement) getModel().getElementAt(index)).wrapper;
if (nameable != null && nameable instanceof NameObject) {
@ -166,177 +24,8 @@ public class UINameEdList extends UIList implements CellEditorListener {
return null;
}
/*
* 设置index节点的名字
*/
// b:edit改变name的时候怎么办?
public void setNameAt(String name, int index) {
Nameable nameable = ((ListModelElement) getModel().getElementAt(index)).wrapper;
if (nameable != null) {
String oldName = nameable.getName();
if (isNameShouldNumber()) {
// kunsnat: 限制只能是数字(int型)
Number number = Utils.string2Number(name);
if (number == null) {
nameable.setName(oldName);
} else {
int newName = number.intValue();
nameable.setName(String.valueOf(newName));
}
} else {
nameable.setName(name);
}
for (int i = 0, len = ll.size(); i < len; i++) {
ll.get(i).nameModed(index, oldName, name);
}
}
}
/*
* 编辑第index个item
*/
private String oldName;
/**
* 编辑第index项
*
* @param index 序号
* @return 成功返回true
*/
public boolean editItemAt(int index) {
// 如果不可编辑,返回
if (!this.editable) {
return false;
}
if (cellEditor != null && !cellEditor.stopCellEditing()) {
return false;
}
if (index < 0 || index >= this.getModel().getSize()) {
return false;
}
ListCellEditor editor = getCellEditor();
Object value = editor.getCellEditorValue();
if (!StringUtils.isBlank(value.toString())) {
oldName = value.toString();
}
editorComp = prepareEditor(editor, index);
if (editorComp == null) {
return false;
}
Rectangle rect = this.getCellBounds(index, index);
// alex:所有的UINameEdList都有Icon,空出前面20 * 20的位置就是放的Icon
rect.setRect(createRect(rect, BUTTON_WIDTH));
editorComp.setBounds(rect);
add(editorComp);
editorComp.validate();
editorComp.requestFocus();
if (editorComp instanceof UITextField) {
((UITextField) editorComp).selectAll();
}
setEditingIndex(index);
return true;
}
public Rectangle createRect(Rectangle rect, int iconWidth) {
return new Rectangle(rect.x + iconWidth, rect.y, rect.width - iconWidth, rect.height);
}
public String getEditingName() {
return (String) getCellEditor().getCellEditorValue();
}
/*
* 根据ListCellEditor取得编辑器的Component
*/
private Component prepareEditor(ListCellEditor cellEditor, int index) {
String name = getNameAt(index);
boolean isSelected = this.isSelectedIndex(index);
Component comp = cellEditor.getListCellEditorComponent(this, name, isSelected, index);
return comp;
}
/*
* 记录正在编辑的index
*/
private void setEditingIndex(int idx) {
editingIndex = idx;
}
/**
* 编辑取消
*
* @param e 事件
*/
public void editingCanceled(ChangeEvent e) {
removeComp();
}
/**
* 编辑结束
*
* @param e 事件
*/
public void editingStopped(ChangeEvent e) {
doAfterLostFocus();
stopEditing();
}
/**
* 停止编辑事件
*/
public void stopEditing() {
ListCellEditor editor = getCellEditor();
if (editor != null && editorComp != null) {
Object value = editor.getCellEditorValue();
String name = StringUtils.isBlank(value.toString()) ? oldName : value.toString();
setNameAt(name, editingIndex);
removeComp();
doAfterStopEditing();
}
}
protected void doAfterStopEditing() {
// default: do nothing
}
public String[] getAllNames() {
int length = this.getModel().getSize();
String[] names = new String[length];
for (int i = 0; i < length; i++) {
names[i] = getNameAt(i);
}
return names;
}
public Object[] getAllTypes() {
int length = this.getModel().getSize();
Object[] types = new Object[length];
for (int i = 0; i < length; i++) {
types[i] = getType(i);
}
return types;
}
/*
* 移除编辑器的Component
*/
private void removeComp() {
if (editorComp != null) {
remove(editorComp);
}
Rectangle cellRect = this.getCellBounds(editingIndex, editingIndex);
setEditingIndex(-1);
editorComp = null;
repaint(cellRect);
public int getIconWidth() {
return BUTTON_WIDTH;
}
@Override
@ -349,67 +38,4 @@ public class UINameEdList extends UIList implements CellEditorListener {
return index;
}
}
/**
* 主函数
*
* @param args 参数
*/
public static void main(String... args) {
JFrame f = new JFrame();
JPanel c = (JPanel) f.getContentPane();
c.setLayout(new BorderLayout());
ListModelElement[] data = new ListModelElement[TEST_LIST_LENTH];
for (int i = 0; i < TEST_LIST_LENTH; i++) {
data[i] = new ListModelElement(new NameObject(i + 1 + "", i));
}
final UINameEdList list = new UINameEdList(data);
list.setEditable(true);
list.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent evt) {
list.stopEditing();
if (evt.getClickCount() >= 2
&& SwingUtilities.isLeftMouseButton(evt)) {
list.editItemAt(list.getSelectedIndex());
}
}
@Override
public void mouseClicked(MouseEvent e) {
JList list = (JList) e.getSource();
if (list.locationToIndex(e.getPoint()) == -1 && !e.isShiftDown()
&& !isMenuShortcutKeyDown(e)) {
list.clearSelection();
}
}
private boolean isMenuShortcutKeyDown(InputEvent event) {
return (event.getModifiers() & Toolkit.getDefaultToolkit()
.getMenuShortcutKeyMask()) != 0;
}
})
;
list.setCellEditor(new DefaultListCellEditor(new UITextField()));
list.setCellRenderer(new NameableListCellRenderer());
c.add(list, BorderLayout.CENTER);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setSize(400, 600);
f.setVisible(true);
}
private static class NameableListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof Nameable) {
Nameable wrappee = (Nameable) value;
this.setText(wrappee.getName());
}
return this;
}
}
}

2
designer-base/src/main/java/com/fr/design/gui/imenutable/UIMenuTable.java

@ -211,7 +211,7 @@ public class UIMenuTable extends JTable {
JPanel content = (JPanel)jf.getContentPane();
content.setLayout(new BorderLayout());
List<UIMenuNameableCreator> data = new ArrayList<UIMenuNameableCreator>();
UIMenuNameableCreator reportlet = new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Reportlet"),
UIMenuNameableCreator reportlet = new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Reportlet"),
new ReportletHyperlink(), ReportletHyperlinkPane.class);
UIMenuNameableCreator email = new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Email"),

2
designer-base/src/main/java/com/fr/design/gui/imenutable/UIMenuTableUI.java

@ -75,7 +75,7 @@ public class UIMenuTableUI extends UITableUI{
public void mousePressed(MouseEvent e) {
if (e.getX() >= table.getWidth() - 20) {
int val = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Are_You_Sure_To_Remove_The_Selected_Item") + "?",
com.fr.design.i18n.Toolkit.i18nText("Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (val == JOptionPane.OK_OPTION) {
uiTable.removeLine(table.rowAtPoint(e.getPoint()));
uiTable.fireTargetChanged();

2
designer-base/src/main/java/com/fr/design/gui/itable/UITableUI.java

@ -133,7 +133,7 @@ public class UITableUI extends BasicTableUI {
}
if (!table.isEditing()) {
int val = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Are_You_Sure_To_Remove_The_Selected_Item") + "?",
com.fr.design.i18n.Toolkit.i18nText("Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (val == JOptionPane.OK_OPTION) {
((UITable) table).removeLine(table.rowAtPoint(e.getPoint()));
((UITable) table).fireTargetChanged();

2
designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java

@ -252,7 +252,7 @@ public abstract class UITableModelAdapter<T extends Object> extends AbstractTabl
component = DesignerContext.getDesignerFrame();
}
int val = JOptionPane.showConfirmDialog(component,
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Are_You_Sure_To_Remove_The_Selected_Item") + "?", com.fr.design.i18n.Toolkit.i18nText("Remove"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Are_You_Sure_To_Remove_The_Selected_Item") + "?", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remove"),
JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (val != JOptionPane.OK_OPTION) {
return;

2
designer-base/src/main/java/com/fr/design/gui/itree/filetree/ReportletPane.java

@ -96,7 +96,7 @@ public class ReportletPane extends BasicPane {
@Override
protected String title4PopupWindow() {
return com.fr.design.i18n.Toolkit.i18nText("Reportlet");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Reportlet");
}
/*

2
designer-base/src/main/java/com/fr/design/mainframe/widget/accessibles/TemplateStylePane.java

@ -54,7 +54,7 @@ public class TemplateStylePane extends BasicPane {
JPanel centerPane = FRGUIPaneFactory.createBorderLayout_L_Pane();
westPane.setPreferredSize(new Dimension(100, 500));
centerPane.setPreferredSize(new Dimension(300, 500));
centerPane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Preview"), null));
centerPane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"), null));
centerPane.add(previewPane);
styleList.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {

8
designer-base/src/main/java/com/fr/design/menu/KeySetUtils.java

@ -450,7 +450,7 @@ public class KeySetUtils {
@Override
public String getMenuName() {
return com.fr.design.i18n.Toolkit.i18nText("ReportD-Excel_Export");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export");
}
@Override
@ -569,7 +569,7 @@ public class KeySetUtils {
@Override
public String getMenuName() {
return com.fr.design.i18n.Toolkit.i18nText("Report-Write_Attributes");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Report_Write_Attributes");
}
@Override
@ -810,7 +810,7 @@ public class KeySetUtils {
@Override
public String getMenuName() {
return com.fr.design.i18n.Toolkit.i18nText("Present-Formula_Present");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Present_Formula_Present");
}
@Override
@ -862,7 +862,7 @@ public class KeySetUtils {
@Override
public String getMenuName() {
return com.fr.design.i18n.Toolkit.i18nText("Present-No_Present");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Present_No_Present");
}
@Override

2
designer-base/src/main/java/com/fr/design/present/FormulaPresentPane.java

@ -23,7 +23,7 @@ public class FormulaPresentPane extends FurtherBasicBeanPane<FormulaPresent> {
@Override
public String title4PopupWindow() {
return com.fr.design.i18n.Toolkit.i18nText("Present-Formula_Present");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Present_Formula_Present");
}
@Override

2
designer-base/src/main/java/com/fr/design/present/NonePresentPane.java

@ -18,7 +18,7 @@ public class NonePresentPane extends FurtherBasicBeanPane<Present> {
@Override
public String title4PopupWindow() {
return com.fr.design.i18n.Toolkit.i18nText("Present-No_Present");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Present_No_Present");
}
public void reset() {

2
designer-base/src/main/java/com/fr/design/style/BorderPane.java

@ -95,7 +95,7 @@ public class BorderPane extends BasicPane {
JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
centerPane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Preview"), null));
centerPane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"), null));
JPanel borderAllControlPane = FRGUIPaneFactory.createCenterFlowInnerContainer_S_Pane();
centerPane.add(borderAllControlPane, BorderLayout.NORTH);
borderAllControlPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 4, 0));

2
designer-base/src/main/java/com/fr/design/style/FRFontPane.java

@ -184,7 +184,7 @@ public class FRFontPane extends BasicPane {
// preview pane.
preview = new FRFontPreviewArea();
preview.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Preview")));
preview.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview")));
rightPane.add(preview, BorderLayout.CENTER);
// Cannot select superscript and subscript in the same time.

2
designer-base/src/main/java/com/fr/design/style/background/image/ImageSelectPane.java

@ -115,7 +115,7 @@ public class ImageSelectPane extends BackgroundPane4BoxChange {
imageSizeLabel.setText("");
} else {
imageSizeLabel.setText(selectImage.getWidth(null) + "x"
+ selectImage.getHeight(null) + com.fr.design.i18n.Toolkit.i18nText("px"));
+ selectImage.getHeight(null) + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Px"));
}
}

2
designer-base/src/main/java/com/fr/design/style/color/DetailColorSelectPane.java

@ -72,7 +72,7 @@ public class DetailColorSelectPane extends BasicPane {
this.getFont().getStyle(), this.getFont().getSize() + 4));
colorPreviewLabel.setBorder(BorderFactory.createEmptyBorder(0, 2, 2, 2));
colorPreviewPane.add(colorPreviewLabel, BorderLayout.CENTER);
UITitledBorder explainBorder = UITitledBorder.createBorderWithTitle(com.fr.design.i18n.Toolkit.i18nText("Preview"));
UITitledBorder explainBorder = UITitledBorder.createBorderWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"));
colorPreviewPane.setBorder(explainBorder);
this.addChangeListener(colorPreviewLabelChangeListener);

2
designer-base/src/main/java/com/fr/design/utils/gui/GUICoreUtils.java

@ -684,7 +684,7 @@ public abstract class GUICoreUtils{
return false;
}
int returnVal = JOptionPane.showConfirmDialog(ancestorWindow, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Are_You_Sure_To_Remove_The_Selected_Item") + "?", com.fr.design.i18n.Toolkit.i18nText("Remove"),
int returnVal = JOptionPane.showConfirmDialog(ancestorWindow, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Are_You_Sure_To_Remove_The_Selected_Item") + "?", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remove"),
JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (returnVal == JOptionPane.OK_OPTION) {
int minSelectedIndex = nodeList.getMinSelectionIndex();

5
designer-base/src/main/java/com/fr/env/EnvListPane.java vendored

@ -103,9 +103,4 @@ public class EnvListPane extends JListControlPane {
}
return this.getSelectedName();
}
@Override
protected boolean filterNameableCreator(NameableCreator creator) {
return false;
}
}

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

@ -24,7 +24,7 @@ public class RemoteSignInPane extends BasicPane {
userLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_UserName")+":");
userTextField = new UITextField();
passLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Password")+":");
passLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Password")+":");
passwordField = new UIPassWordField();
this.add(userLabel);
this.add(userTextField);

2
designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java

@ -55,7 +55,7 @@ public class ChartEmailPane extends EmailPane{
}
centerPane = new JPanel(new BorderLayout());
if (needRenamePane()) {
JPanel namePane = TableLayoutHelper.createCommonTableLayoutPane(new JComponent[][]{{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Name") + ":", SwingConstants.RIGHT), itemNameTextField},},
JPanel namePane = TableLayoutHelper.createCommonTableLayoutPane(new JComponent[][]{{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Name") + ":", SwingConstants.RIGHT), itemNameTextField},},
new double[] {preferred}, columnSize, 6);
centerPane.add(namePane, BorderLayout.NORTH);
}

4
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/PresentComboBox.java

@ -25,8 +25,8 @@ public class PresentComboBox extends UIComboBox{
private String[] ITEMS = {
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"),
com.fr.design.i18n.Toolkit.i18nText("Present-Formula_Present"),
com.fr.design.i18n.Toolkit.i18nText("Present-No_Present")
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Present_Formula_Present"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Present_No_Present")
};
public PresentComboBox() {

18
designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java

@ -74,7 +74,7 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane {
}
protected BasicBeanPane createPaneByCreators(NameableCreator creator) {
public BasicBeanPane createPaneByCreators(NameableCreator creator) {
Constructor<? extends BasicBeanPane> constructor = null;
try {
constructor = creator.getUpdatePane().getConstructor(HashMap.class, boolean.class);
@ -111,8 +111,8 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane {
}
@Override
protected AddItemMenuDef getAddItemMenuDef (NameableCreator[] creators) {
return new AddVanChartItemMenuDef(creators);
protected void initShortCutFactory() {
this.shortCutFactory = VanChartShortCutFactory.newInstance(this);
}
public void populate(NameJavaScriptGroup nameHyperlink_array) {
@ -272,18 +272,6 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane {
return null;
}
protected class AddVanChartItemMenuDef extends AddItemMenuDef {
public AddVanChartItemMenuDef(NameableCreator[] creators) {
super(creators);
}
@Override
protected boolean whetherAdd(String itemName) {
return HyperlinkFilterHelper.whetherAddHyperlink4Chart(itemName);
}
}
//邮箱
public static class VanChartEmailPane extends ChartEmailPane {
@Override

33
designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartShortCutFactory.java

@ -0,0 +1,33 @@
package com.fr.van.chart.custom.component;
import com.fr.design.gui.HyperlinkFilterHelper;
import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.design.gui.controlpane.shortcutfactory.ShortCutFactory;
import com.fr.design.gui.controlpane.ShortCutListenerProvider;
import com.fr.design.menu.ShortCut;
/**
* Created by plough on 2018/8/13.
*/
public class VanChartShortCutFactory extends ShortCutFactory {
private VanChartShortCutFactory(ShortCutListenerProvider listenerProvider) {
super(listenerProvider);
}
@Override
public ShortCut createAddItemMenuDef(NameableCreator[] creators) {
return new AddVanChartItemMenuDef(creators);
}
private class AddVanChartItemMenuDef extends AddItemMenuDef {
AddVanChartItemMenuDef(NameableCreator[] creators) {
super(creators);
}
@Override
protected boolean whetherAdd(String itemName) {
return HyperlinkFilterHelper.whetherAddHyperlink4Chart(itemName);
}
}
}

2
designer-chart/src/main/java/com/fr/van/chart/designer/other/VanChartConditionListControlPane.java

@ -41,7 +41,7 @@ public class VanChartConditionListControlPane extends VanChartUIListControlPane
}
protected BasicBeanPane createPaneByCreators(NameableCreator creator) {
public BasicBeanPane createPaneByCreators(NameableCreator creator) {
Constructor<? extends BasicBeanPane> constructor = null;
try {
constructor = creator.getUpdatePane().getConstructor(Plot.class);

6
designer-chart/src/main/java/com/fr/van/chart/designer/style/background/AlertLineListControlPane.java

@ -40,9 +40,9 @@ public class AlertLineListControlPane extends VanChartUIListControlPane {
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
moveUpItemShortCut(),
moveDownItemShortCut(),
removeItemShortCut()
shortCutFactory.moveUpItemShortCut(),
shortCutFactory.moveDownItemShortCut(),
shortCutFactory.removeItemShortCut()
};
}

6
designer-chart/src/main/java/com/fr/van/chart/designer/style/background/BackgroundListControlPane.java

@ -42,9 +42,9 @@ public class BackgroundListControlPane extends VanChartUIListControlPane {
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
moveUpItemShortCut(),
moveDownItemShortCut(),
removeItemShortCut()
shortCutFactory.moveUpItemShortCut(),
shortCutFactory.moveDownItemShortCut(),
shortCutFactory.removeItemShortCut()
};
}

6
designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartStackedAndAxisListControlPane.java

@ -40,9 +40,9 @@ public class VanChartStackedAndAxisListControlPane extends VanChartUIListControl
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
moveUpItemShortCut(),
moveDownItemShortCut(),
removeItemShortCut()
shortCutFactory.moveUpItemShortCut(),
shortCutFactory.moveDownItemShortCut(),
shortCutFactory.removeItemShortCut()
};
}

2
designer-form/src/main/java/com/fr/design/designer/properties/VerticalSplitProperties.java

@ -46,7 +46,7 @@ public class VerticalSplitProperties implements GroupModel {
if (column == 0) {
switch (row) {
case 0:
return com.fr.design.i18n.Toolkit.i18nText("Ratio");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Ratio");
case 1:
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Hgap");
case 2:

2
designer-form/src/main/java/com/fr/design/designer/properties/items/HorizontalAlignmentItems.java

@ -7,7 +7,7 @@ import java.awt.FlowLayout;
public class HorizontalAlignmentItems implements ItemProvider {
private static Item[] VALUE_ITEMS = {
new Item(com.fr.design.i18n.Toolkit.i18nText("Left"), FlowLayout.LEFT),
new Item(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Left"), FlowLayout.LEFT),
new Item(com.fr.design.i18n.Toolkit.i18nText("Right"), FlowLayout.RIGHT),
new Item(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Center"), FlowLayout.CENTER)
};

2
designer-form/src/main/java/com/fr/design/designer/properties/items/LabelHorizontalAlignmentItems.java

@ -7,7 +7,7 @@ import javax.swing.SwingConstants;
public class LabelHorizontalAlignmentItems implements ItemProvider {
private static Item[] VALUE_ITEMS = {
new Item(com.fr.design.i18n.Toolkit.i18nText("Left"), SwingConstants.LEFT),
new Item(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Left"), SwingConstants.LEFT),
new Item(com.fr.design.i18n.Toolkit.i18nText("Right"), SwingConstants.RIGHT),
new Item(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Center"), SwingConstants.CENTER)
};

4
designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/ColorPalette.java

@ -21,8 +21,8 @@ import com.fr.design.layout.FRGUIPaneFactory;
public class ColorPalette extends JPopupMenu {
private Border BLACK_BORDER = BorderFactory.createLineBorder(new Color(127, 157, 185));
private Object[] colors = new Object[]{new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Black"), new Color(0, 0, 0)}, new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Crimson"), new Color(128, 0, 0)}, new Object[]{com.fr.design.i18n.Toolkit.i18nText("Red"), new Color(255, 0, 0)},
new Object[]{com.fr.design.i18n.Toolkit.i18nText("Pink"), new Color(255, 0, 255)}, new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Rose_Red"), new Color(255, 153, 204)}, new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Brown"), new Color(153, 51, 0)},
private Object[] colors = new Object[]{new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Black"), new Color(0, 0, 0)}, new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Crimson"), new Color(128, 0, 0)}, new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Red"), new Color(255, 0, 0)},
new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Pink"), new Color(255, 0, 255)}, new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Rose_Red"), new Color(255, 153, 204)}, new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Brown"), new Color(153, 51, 0)},
new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Orange"), new Color(255, 102, 0)}, new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Light_Orange"), new Color(255, 153, 0)}, new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Golden"), new Color(255, 204, 0)},
new Object[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Brown_Orange"), new Color(255, 204, 153)}, new Object[]{"", new Color(51, 51, 0)}, new Object[]{"", new Color(128, 128, 0)}, new Object[]{"", new Color(153, 204, 0)},
new Object[]{"", new Color(255, 255, 0)}, new Object[]{"", new Color(255, 255, 153)}, new Object[]{"", new Color(0, 51, 0)}, new Object[]{"", new Color(0, 128, 0)},

4
designer-realize/src/main/java/com/fr/design/actions/utils/DeprecatedActionManager.java

@ -96,13 +96,13 @@ public class DeprecatedActionManager {
presentMenu.setMnemonic(KeySetUtils.PRESENT.getMnemonic());
NewPresentAction dataDictAction = new NewPresentAction(ePane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_M_Format_Data_Map"), DictPresent.class.getName());
dataDictAction.setMnemonic('D');
NewPresentAction formulaAction = new NewPresentAction(ePane, com.fr.design.i18n.Toolkit.i18nText("Present-Formula_Present"), FormulaPresent.class.getName());
NewPresentAction formulaAction = new NewPresentAction(ePane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Present_Formula_Present"), FormulaPresent.class.getName());
formulaAction.setMnemonic('F');
NewPresentAction barcodeAction = new NewPresentAction(ePane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_M_Insert_Barcode"), BarcodePresent.class.getName());
barcodeAction.setMnemonic('B');
NewPresentAction currencyLineAction = new NewPresentAction(ePane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Currency_Line"), CurrencyLinePresent.class.getName());
currencyLineAction.setMnemonic('L');
NewPresentAction nonePresentAction = new NewPresentAction(ePane, com.fr.design.i18n.Toolkit.i18nText("Present-No_Present"), "NOPRESENT");
NewPresentAction nonePresentAction = new NewPresentAction(ePane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Present_No_Present"), "NOPRESENT");
nonePresentAction.setMnemonic('N');
presentMenu.addShortCut(dataDictAction);
presentMenu.addShortCut(formulaAction);

2
designer-realize/src/main/java/com/fr/design/headerfooter/HeaderFooterEditPane.java

@ -97,7 +97,7 @@ public class HeaderFooterEditPane extends JPanel {
JPanel hfPreviewContentPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
centerPane.add(hfPreviewContentPane, BorderLayout.CENTER);
hfPreviewContentPane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Preview"),null));
hfPreviewContentPane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"),null));
hfPreviewPane = new HFPreviewPane();
scrollPreviewPane = new JScrollPane(hfPreviewPane);

2
designer-realize/src/main/java/com/fr/design/headerfooter/ImagePane.java

@ -39,7 +39,7 @@ public class ImagePane extends BasicPane {
// previewPane.setLayout(FRGUIPaneFactory.createBorderLayout());
if (hasPreviewBorder) {
previewPane.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Preview")));
previewPane.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview")));
}
imagePreviewPane = new ImagePreviewPane();

10
designer-realize/src/main/java/com/fr/design/mainframe/SheetNameTabPane.java

@ -834,7 +834,7 @@ public class SheetNameTabPane extends JComponent implements MouseListener, Mouse
@Override
protected String getTemplateReportType() {
return com.fr.design.i18n.Toolkit.i18nText("Report");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Report");
}
}
@ -846,13 +846,13 @@ public class SheetNameTabPane extends JComponent implements MouseListener, Mouse
@Override
protected String getTemplateReportType() {
return com.fr.design.i18n.Toolkit.i18nText("Poly");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Poly");
}
}
private class RemoveSheetAction extends UpdateAction {
RemoveSheetAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Remove"));
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remove"));
this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/remove.png"));
}
@ -908,7 +908,7 @@ public class SheetNameTabPane extends JComponent implements MouseListener, Mouse
private class RenameSheetAction extends UpdateAction {
RenameSheetAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Rename"));
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Rename"));
this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/rename.png"));
}
@ -918,7 +918,7 @@ public class SheetNameTabPane extends JComponent implements MouseListener, Mouse
return;
}
String newName = JOptionPane.showInputDialog(reportComposite, com.fr.design.i18n.Toolkit.i18nText("Rename") + ":", reportComposite.getEditingWorkBook().getReportName(selectedIndex));
String newName = JOptionPane.showInputDialog(reportComposite, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Rename") + ":", reportComposite.getEditingWorkBook().getReportName(selectedIndex));
if (newName != null) {
// marks:判断是否重名
boolean isExisted = false;

6
designer-realize/src/main/java/com/fr/design/present/BarCodePane.java

@ -167,14 +167,14 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
double[] columnSize = {p, f};
double[] rowSize = {p, p, p};
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}};
UILabel uiLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("RCodeVersion"), UILabel.LEFT);
UILabel uiLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_RCode_Version"), UILabel.LEFT);
uiLabel.setPreferredSize(typeSetLabel.getPreferredSize());
RCodeVersionComboBox.setPreferredSize(new Dimension(155,20));
RCodeErrorCorrectComboBox.setPreferredSize(new Dimension(155,20));
RCodesizespinner.setPreferredSize(new Dimension(155,20));
Component[][] components_special = new Component[][]{
new Component[]{uiLabel, RCodeVersionComboBox},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("RCodeErrorCorrect"), UILabel.LEFT), RCodeErrorCorrectComboBox},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_RCode_Error_Correct"), UILabel.LEFT), RCodeErrorCorrectComboBox},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_RCodeDrawPix"), UILabel.LEFT), RCodesizespinner}
};
@ -230,7 +230,7 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
}
private void initErrorCorrectComboBox() {
String[] array = {"L" + com.fr.design.i18n.Toolkit.i18nText("Level") + "7%", "M" + com.fr.design.i18n.Toolkit.i18nText("Level") + "15%", "Q" + com.fr.design.i18n.Toolkit.i18nText("Level") + "25%", "H" + com.fr.design.i18n.Toolkit.i18nText("Level") + "30%"};
String[] array = {"L" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Level") + "7%", "M" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Level") + "15%", "Q" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Level") + "25%", "H" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Level") + "30%"};
initcombobox(this.RCodeErrorCorrectComboBox, array, 1);
}

2
designer-realize/src/main/java/com/fr/design/report/ExcelExportPane.java

@ -32,7 +32,7 @@ public class ExcelExportPane extends BasicPane {
protected void initComponents() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
JPanel outnorthPane =FRGUIPaneFactory.createTitledBorderPane("Excel" + com.fr.design.i18n.Toolkit.i18nText("ReportD-Excel_Export"));
JPanel outnorthPane =FRGUIPaneFactory.createTitledBorderPane("Excel" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export"));
JPanel northPane=FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane();
this.add(outnorthPane);
outnorthPane.add(northPane);

2
designer-realize/src/main/java/com/fr/design/report/PDFExportPane.java

@ -27,7 +27,7 @@ public class PDFExportPane extends BasicPane {
protected void initComponents() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
JPanel outnorthPane =FRGUIPaneFactory.createTitledBorderPane("PDF" + com.fr.design.i18n.Toolkit.i18nText("ReportD-Excel_Export"));
JPanel outnorthPane =FRGUIPaneFactory.createTitledBorderPane("PDF" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export"));
JPanel northPane=FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane();
this.add(outnorthPane);
outnorthPane.add(northPane);

4
designer-realize/src/main/java/com/fr/design/report/PageSetupPane.java

@ -184,7 +184,7 @@ public class PageSetupPane extends BasicPane {
portraitRadioButton.setSelected(true);
JPanel spp = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Preview"));
JPanel spp = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"));
showPagePane = new ShowPagePane();
spp.add(showPagePane);
defaultPane.add(spp);
@ -293,7 +293,7 @@ public class PageSetupPane extends BasicPane {
// peter:这个一个垂直的上下的字符panel.
JPanel marginRightTextPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
marginRightPane.add(marginRightTextPane);
marginRightTextPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Left") + ":"));
marginRightTextPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Left") + ":"));
marginLeftUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM);
marginRightTextPane.add(marginLeftUnitFieldPane);

2
designer-realize/src/main/java/com/fr/design/report/ReportExportAttrPane.java

@ -41,7 +41,7 @@ public class ReportExportAttrPane extends BasicPane {
@Override
protected String title4PopupWindow() {
return com.fr.design.i18n.Toolkit.i18nText("ReportD-Excel_Export");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export");
}
public void populate(ReportExportAttr reportExportAttr) {

2
designer-realize/src/main/java/com/fr/design/report/SelectImagePane.java

@ -63,7 +63,7 @@ public class SelectImagePane extends BasicPane {
JPanel previewOwnerPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
previewContainerPane.add(previewOwnerPane, BorderLayout.CENTER);
previewOwnerPane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Preview"), null));
previewOwnerPane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"), null));
previewPane = new ImagePreviewPane();
previewOwnerPane.add(new JScrollPane(previewPane));

2
designer-realize/src/main/java/com/fr/design/report/WordExportPane.java

@ -24,7 +24,7 @@ public class WordExportPane extends BasicPane {
protected void initComponents() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
JPanel outnorthPane =FRGUIPaneFactory.createTitledBorderPane("Word" + com.fr.design.i18n.Toolkit.i18nText("ReportD-Excel_Export"));
JPanel outnorthPane =FRGUIPaneFactory.createTitledBorderPane("Word" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export"));
this.add(outnorthPane);
JPanel northPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane();

6
designer-realize/src/main/java/com/fr/design/report/share/ConfusionManagerPane.java

@ -77,7 +77,11 @@ public class ConfusionManagerPane extends JListControlPane {
@Override
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[] { moveUpItemShortCut(), moveDownItemShortCut(), sortItemShortCut() };
return new ShortCut4JControlPane[] {
shortCutFactory.moveUpItemShortCut(),
shortCutFactory.moveDownItemShortCut(),
shortCutFactory.sortItemShortCut()
};
}
}

2
designer-realize/src/main/java/com/fr/design/style/StylePane.java

@ -69,7 +69,7 @@ public class StylePane extends BasicBeanPane<Style> implements ChangeListener {
previewPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
this.add(previewPane, BorderLayout.NORTH);
previewPane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Preview"), null));
previewPane.setBorder(GUICoreUtils.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"), null));
previewArea = new PreivewArea();
previewPane.add(previewArea, BorderLayout.CENTER);

2
designer-realize/src/main/java/com/fr/design/webattr/ReportWebWidgetConstants.java

@ -84,7 +84,7 @@ public class ReportWebWidgetConstants {
// 邮件发送
public static final WidgetOption EMAIL = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Email"), BaseUtils.readIcon("/com/fr/web/images/email.png"), Email.class);
public static final WidgetOption PRINTPREVIEW = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("PrintP-Print_Preview"),
public static final WidgetOption PRINTPREVIEW = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_PrintP_Print_Preview"),
BaseUtils.readIcon("/com/fr/web/images/preview.png"), PrintPreview.class);

8
designer-realize/src/main/java/com/fr/design/webattr/ServerPrinterPane.java

@ -71,7 +71,7 @@ public class ServerPrinterPane extends BasicPane {
removeButton = new UIButton(BaseUtils.readIcon("/com/fr/base/images/cell/control/remove.png"));
removeButton.addActionListener(this.removeActionListener);
removeButton.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Remove"));//"remove"
removeButton.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remove"));//"remove"
removeButton.setPreferredSize(preferDimension);
moveUpButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/control/up.png"));
@ -162,7 +162,7 @@ public class ServerPrinterPane extends BasicPane {
}
int returnVal = JOptionPane.showConfirmDialog(ServerPrinterPane.this, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportServerP_Are_You_Sure_To_Delete_The_Selected_Printer")
+ "?", com.fr.design.i18n.Toolkit.i18nText("Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
+ "?", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (returnVal == JOptionPane.OK_OPTION) {
((DefaultListModel) printerList.getModel()).remove(selectedIndex);
@ -319,7 +319,7 @@ public class ServerPrinterPane extends BasicPane {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(20, 5, 0, 0));
JPanel centerPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
centerPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Printer") + ":"), BorderLayout.WEST);
centerPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Printer") + ":"), BorderLayout.WEST);
DefaultComboBoxModel printerComboModel = new DefaultComboBoxModel();
@ -356,7 +356,7 @@ public class ServerPrinterPane extends BasicPane {
@Override
protected String title4PopupWindow() {
return com.fr.design.i18n.Toolkit.i18nText("Printer");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Printer");
}
public void populate(String printerName) {

2
designer-realize/src/main/java/com/fr/design/webattr/printsettings/PageMarginSettingPane.java

@ -47,7 +47,7 @@ public class PageMarginSettingPane extends JPanel {
// peter:这个一个垂直的上下的字符panel.
JPanel marginRightTextPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
marginRightPane.add(marginRightTextPane);
marginRightTextPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Left") + ":"));
marginRightTextPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Left") + ":"));
marginLeftUnitFieldPane = new UnitFieldPane(Constants.UNIT_MM);
marginRightTextPane.add(marginLeftUnitFieldPane);

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

@ -325,7 +325,7 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter {
.append(unit).append('(')
.append((int)(doubleValue)).append('/')
.append((int)(totalDoubleValue))
.append(com.fr.design.i18n.Toolkit.i18nText("px"))
.append(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Px"))
.append(')');
return sb.toString();
}

2
designer-realize/src/main/java/com/fr/poly/group/PolyNameGroup.java

@ -44,7 +44,7 @@ public class PolyNameGroup implements GroupModel {
@Override
public Object getValue(int row, int column) {
if (column == 0) {
return com.fr.design.i18n.Toolkit.i18nText("Poly_Name");
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Poly_Name");
} else {
return block.getBlockName();
}

Loading…
Cancel
Save