diff --git a/.gitignore b/.gitignore
index ec8c85a73..a9c6c2320 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,5 @@ designer_base/bin
designer_chart/bin
designer_form/bin
*.iml
+
+
diff --git a/designer/designer.iml b/designer/designer.iml
index 661dcd939..eca9d8fcd 100644
--- a/designer/designer.iml
+++ b/designer/designer.iml
@@ -1,13 +1,14 @@
-
-
+
+
-
+
-
+
+
\ No newline at end of file
diff --git a/designer/src/com/fr/design/mainframe/CellElementPropertyPane.java b/designer/src/com/fr/design/mainframe/CellElementPropertyPane.java
index fa602c8bd..d68bd7757 100644
--- a/designer/src/com/fr/design/mainframe/CellElementPropertyPane.java
+++ b/designer/src/com/fr/design/mainframe/CellElementPropertyPane.java
@@ -102,12 +102,23 @@ public class CellElementPropertyPane extends DockingView {
return element;
}
+ public void removeAll() {
+ this.remove(titlePane);
+ this.remove(cellElementEditPane);
+ }
+
+ public void reInit(ElementCasePane ePane) {
+ this.add(titlePane, BorderLayout.NORTH);
+ this.add(cellElementEditPane, BorderLayout.CENTER);
+ cellElementEditPane.populate(ePane);
+ }
+
public void populate(ElementCasePane ePane) {
TemplateElementCase elementCase = ePane.getEditingElementCase();
if (elementCase == null) {
return;
}
- cellElementEditPane.populate(ePane);
+ ePane.getSelection().populatePropertyPane(ePane);
}
@Override
diff --git a/designer/src/com/fr/design/mainframe/JWorkBook.java b/designer/src/com/fr/design/mainframe/JWorkBook.java
index f3722c4ac..c46f97f5d 100644
--- a/designer/src/com/fr/design/mainframe/JWorkBook.java
+++ b/designer/src/com/fr/design/mainframe/JWorkBook.java
@@ -463,7 +463,7 @@ public class JWorkBook extends JTemplate {
*/
public ShortCut[] shortCuts4Authority() {
return new ShortCut[]{
- new NameSeparator(Inter.getLocText(new String[]{"DashBoard-Potence", "Edit"})),
+ new NameSeparator(Inter.getLocText("FR-Designer_Permissions_Edition")),
BaseUtils.isAuthorityEditing() ? new ExitAuthorityEditAction(this) : new AllowAuthorityEditAction(this),
};
diff --git a/designer/src/com/fr/design/webattr/EditToolBar.java b/designer/src/com/fr/design/webattr/EditToolBar.java
index 58f455870..ac1295934 100644
--- a/designer/src/com/fr/design/webattr/EditToolBar.java
+++ b/designer/src/com/fr/design/webattr/EditToolBar.java
@@ -7,6 +7,7 @@ import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.fun.ExportToolBarProvider;
+import com.fr.design.fun.ExtraButtonToolBarProvider;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel;
@@ -199,7 +200,7 @@ public class EditToolBar extends BasicPane {
toolBarButton.setWidget(widget);
if (widget instanceof Button) {
String iconname = ((Button) widget).getIconName();
- if (!StringUtils.isBlank(iconname)) {
+ if (StringUtils.isNotBlank(iconname)) {
Image iimage = WidgetManager.getProviderInstance().getIconManager().getIconImage(iconname);
toolBarButton.setIcon(new ImageIcon(iimage));
}
@@ -326,7 +327,7 @@ public class EditToolBar extends BasicPane {
private IconDefinePane iconPane;
private UIButton button;
private JavaScriptActionPane javaScriptPane;
- private ExportToolBarProvider[] exportToolBarProviders;
+ private ExportToolBarProvider[] exportToolBarProviders;
private ChangeListener changeListener = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
@@ -386,6 +387,11 @@ public class EditToolBar extends BasicPane {
centerPane.add(getCpane(), "appendcount");
centerPane.add(getSubmitPane(), "submit");
+ Set extraButtonSet = ExtraDesignClassManager.getInstance().getArray(ExtraButtonToolBarProvider.XML_TAG);
+ for (ExtraButtonToolBarProvider provider : extraButtonSet) {
+ provider.updateCenterPane(centerPane);
+ }
+
this.add(centerPane, BorderLayout.CENTER);
}
@@ -479,7 +485,6 @@ public class EditToolBar extends BasicPane {
return submitPane;
}
-
@Override
protected String title4PopupWindow() {
return "Button";
@@ -528,13 +533,18 @@ public class EditToolBar extends BasicPane {
} else if (widget instanceof CustomToolBarButton) {
populateCustomToolBarButton();
}
- }
-
+
+ Set extraButtonSet = ExtraDesignClassManager.getInstance().getArray(ExtraButtonToolBarProvider.XML_TAG);
+ for (ExtraButtonToolBarProvider provider : extraButtonSet) {
+ provider.populate(widget, card, centerPane);
+ }
+ }
+
private void populateAppendColumnRow(){
card.show(centerPane, "appendcount");
count.setValue(((AppendColumnRow) widget).getCount());
}
-
+
private void populateExport(){
card.show(centerPane, "export");
Export export = (Export) widget;
@@ -550,7 +560,7 @@ public class EditToolBar extends BasicPane {
}
}
}
-
+
private void populateCustomToolBarButton(){
card.show(centerPane, "custom");
CustomToolBarButton customToolBarButton = (CustomToolBarButton) widget;
@@ -558,7 +568,7 @@ public class EditToolBar extends BasicPane {
this.javaScriptPane.populateBean(customToolBarButton.getJSImpl());
}
}
-
+
private void populateSubmit(){
card.show(centerPane, "submit");
Submit submit = ((Submit) widget);
@@ -566,13 +576,13 @@ public class EditToolBar extends BasicPane {
this.failSubmit.setSelected(submit.isFailVerifySubmit());
this.isCurSheet.setSelected(submit.isOnlySubmitSelect());
}
-
+
private void populatePDFPrint(){
card.show(centerPane, "pdfprint");
PDFPrint pdfPrint = (PDFPrint) widget;
this.isPopup.setSelected(pdfPrint.isPopup());
}
-
+
private void populatePrint(){
card.show(centerPane, "print");
Print print = (Print) widget;
@@ -581,7 +591,7 @@ public class EditToolBar extends BasicPane {
this.flashPrint.setSelected(print.isFlashPrint());
this.serverPrint.setSelected(print.isServerPrint());
}
-
+
private void populateDefault(){
Button button = (Button) widget;
this.icon.setSelected(button.isShowIcon());
@@ -592,7 +602,7 @@ public class EditToolBar extends BasicPane {
/**
* 更新
- *
+ *
* @return 对应组件
*/
public Widget update() {
@@ -613,23 +623,29 @@ public class EditToolBar extends BasicPane {
if (widget instanceof Button) {
updateDefault();
}
+
+ Set extraButtonSet = ExtraDesignClassManager.getInstance().getArray(ExtraButtonToolBarProvider.XML_TAG);
+ for (ExtraButtonToolBarProvider provider : extraButtonSet) {
+ provider.update(widget);
+ }
+
return widget;
}
-
+
private void updateDefault(){
((Button) widget).setShowIcon(this.icon.isSelected());
((Button) widget).setShowText(this.text.isSelected());
((Button) widget).setText(this.nameField.getText());
((Button) widget).setIconName(this.iconPane.update());
}
-
+
private void updateSubmit(){
Submit submit = ((Submit) widget);
submit.setVerify(this.isVerify.isSelected());
submit.setFailVerifySubmit(this.failSubmit.isSelected());
submit.setOnlySubmitSelect(this.isCurSheet.isSelected());
}
-
+
private void updatePrint(){
Print print = (Print) widget;
print.setAppletPrint(this.appletPrint.isSelected());
@@ -637,7 +653,7 @@ public class EditToolBar extends BasicPane {
print.setPDFPrint(this.pdfPrint.isSelected());
print.setServerPrint(this.serverPrint.isSelected());
}
-
+
private void updateExport(){
Export export = (Export) widget;
export.setPdfAvailable(this.pdf.isSelected());
diff --git a/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java b/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java
index 2e01bac09..22d398d3e 100644
--- a/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java
+++ b/designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java
@@ -78,13 +78,13 @@ public class ReportWebWidgetConstants {
public static final WidgetOption EDIT = WidgetOptionFactory.createByWidgetClass("Edit", Edit.class);
// 导出成Excel 分页导出
- public static final WidgetOption EXCELP = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"Excel", "Export-Excel-Page"}, new String[]{"(", ")"}),
+ public static final WidgetOption EXCELP = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"Excel", "FR-Designer_Export_Excel_Page"}, new String[]{"(", ")"}),
BaseUtils.readIcon("/com/fr/web/images/excel.png"), ExcelP.class);
// 导出成Excel 原样导出
- public static final WidgetOption EXCELO = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"Excel", "Export-Excel-Simple"}, new String[]{"(", ")"}),
+ public static final WidgetOption EXCELO = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"Excel", "FR-Designer_Export_Excel_Simple"}, new String[]{"(", ")"}),
BaseUtils.readIcon("/com/fr/web/images/excel.png"), ExcelO.class);
// 导出成Excel 分页分Sheet导出
- public static final WidgetOption EXCELS = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"Excel", "Export-Excel-PageToSheet"}, new String[]{"(", ")"}),
+ public static final WidgetOption EXCELS = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"Excel", "FR-Designer_Export_Excel_PageToSheet"}, new String[]{"(", ")"}),
BaseUtils.readIcon("/com/fr/web/images/excel.png"), ExcelS.class);
// 导出成Word
diff --git a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java
index 1c11aad2e..c9128627c 100644
--- a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java
+++ b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java
@@ -61,11 +61,7 @@ public class TextFieldEditorDefinePane extends FieldEditorDefinePane
regPane.getRegComboBox().addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
RegExp regExp = (RegExp) regPane.getRegComboBox().getSelectedItem();
- if (!StringUtils.isNotEmpty(regExp.toRegText())) {
- getRegErrorMsgTextField().setEnabled(false);
- } else {
- getRegErrorMsgTextField().setEnabled(true);
- }
+ getRegErrorMsgTextField().setEnabled(regExp.errorMessageEditable());
}
});
diff --git a/designer/src/com/fr/grid/selection/CellSelection.java b/designer/src/com/fr/grid/selection/CellSelection.java
index c08f87088..458d9fd29 100644
--- a/designer/src/com/fr/grid/selection/CellSelection.java
+++ b/designer/src/com/fr/grid/selection/CellSelection.java
@@ -18,6 +18,7 @@ import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.gui.imenu.UIMenu;
import com.fr.design.gui.imenu.UIPopupMenu;
+import com.fr.design.mainframe.CellElementPropertyPane;
import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.mainframe.ElementCasePane.Clear;
import com.fr.design.mainframe.JTemplate;
@@ -684,4 +685,9 @@ public class CellSelection extends Selection {
editor.populate(tc);
return editor;
}
+
+ @Override
+ public void populatePropertyPane(ElementCasePane ePane) {
+ CellElementPropertyPane.getInstance().reInit(ePane);
+ }
}
\ No newline at end of file
diff --git a/designer/src/com/fr/grid/selection/FloatSelection.java b/designer/src/com/fr/grid/selection/FloatSelection.java
index 0c1b1fcb0..5f0be878c 100644
--- a/designer/src/com/fr/grid/selection/FloatSelection.java
+++ b/designer/src/com/fr/grid/selection/FloatSelection.java
@@ -20,6 +20,7 @@ import com.fr.design.cell.clipboard.CellElementsClip;
import com.fr.design.cell.clipboard.ElementsTransferable;
import com.fr.design.cell.clipboard.FloatElementsClip;
import com.fr.design.designer.TargetComponent;
+import com.fr.design.mainframe.CellElementPropertyPane;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import com.fr.design.mainframe.ElementCasePane;
@@ -230,4 +231,9 @@ public class FloatSelection extends Selection {
editor.populate(tc);
return editor;
}
+
+ @Override
+ public void populatePropertyPane(ElementCasePane ePane) {
+ CellElementPropertyPane.getInstance().removeAll();
+ }
}
\ No newline at end of file
diff --git a/designer/src/com/fr/grid/selection/Selection.java b/designer/src/com/fr/grid/selection/Selection.java
index e7466b365..c12dda83b 100644
--- a/designer/src/com/fr/grid/selection/Selection.java
+++ b/designer/src/com/fr/grid/selection/Selection.java
@@ -87,6 +87,8 @@ public abstract class Selection implements FCloneable, Serializable , Selectable
// //////////////////////////Just4CellSelection///////////////////////////////
public abstract boolean containsColumnRow(ColumnRow cr);
+
+ public abstract void populatePropertyPane(ElementCasePane ePane);
@Override
diff --git a/designer_base/src/com/fr/design/actions/file/LocalePane.java b/designer_base/src/com/fr/design/actions/file/LocalePane.java
index 3356fa70a..4dd25c504 100644
--- a/designer_base/src/com/fr/design/actions/file/LocalePane.java
+++ b/designer_base/src/com/fr/design/actions/file/LocalePane.java
@@ -27,6 +27,8 @@ import com.fr.design.dialog.BasicPane;
import com.fr.file.filetree.FileNode;
import com.fr.general.*;
import com.fr.stable.ArrayUtils;
+import com.fr.stable.StringUtils;
+import com.fr.stable.bridge.StableFactory;
import com.fr.stable.project.ProjectConstants;
/**
@@ -51,8 +53,8 @@ public class LocalePane extends BasicPane {
add(tabbedPane, BorderLayout.CENTER);
predefineTableModel = new DefaultTableModel() {
- public boolean isCellEditable(int col, int row) {
- return false;
+ public boolean isCellEditable(int row, int column) {
+ return column == 0;
}
};
@@ -109,23 +111,39 @@ public class LocalePane extends BasicPane {
}
private void initPredefinedProperties() {
- Map map = Inter.getPredefinedPackageMap();
- LocalePackage chinese = map.get(Locale.SIMPLIFIED_CHINESE);
+
+ Map supportLocaleMap = Inter.getSupportLocaleMap();
+
+ String[] localeFiles = StableFactory.getLocaleFiles();
+
+
List sortKeys = new ArrayList();
- Set bundles = chinese.getKindsOfResourceBundle();
- for (ResourceBundle bundle : bundles) {
- sortKeys.addAll(bundle.keySet());
+ for (String path : localeFiles) {
+ ResourceBundle chineseBundle = loadResourceBundle(path, Locale.SIMPLIFIED_CHINESE);
+ sortKeys.addAll(chineseBundle.keySet());
}
Collections.sort(sortKeys);
+ Map> localeResourceBundleMap = new HashMap>();
+ for (Map.Entry entry : supportLocaleMap.entrySet()) {
+ Locale locale = entry.getKey();
+ List list = new ArrayList<>();
+ for (String path : localeFiles) {
+ ResourceBundle chineseBundle = loadResourceBundle(path, locale);
+ list.add(chineseBundle);
+ }
+ localeResourceBundleMap.put(locale, list);
+ }
+
Map> data = new HashMap>();
- for (Map.Entry entry : map.entrySet()) {
+ for (Map.Entry> entry : localeResourceBundleMap.entrySet()) {
Vector column = new Vector();
+ List rbs = entry.getValue();
for (String key : sortKeys) {
- column.add(entry.getValue().getLocText(key));
+ column.add(readText(rbs, key));
}
data.put(entry.getKey(), column);
}
@@ -140,6 +158,19 @@ public class LocalePane extends BasicPane {
}
}
+ private String readText(List rbs, String key) {
+ for (ResourceBundle rb : rbs) {
+ if (rb.containsKey(key)) {
+ return rb.getString(key);
+ }
+ }
+ return null;
+ }
+
+ private ResourceBundle loadResourceBundle(String dir, Locale locale) {
+ return ResourceBundle.getBundle(dir, locale, Inter.class.getClassLoader());
+ }
+
private void initCustomProperties() throws Exception {
Env env = FRContext.getCurrentEnv();
if (env == null) {
@@ -176,22 +207,9 @@ public class LocalePane extends BasicPane {
}
}
- private Properties loadLocaleProperties(String name) {
- Properties properties = new Properties();
- InputStream inputStream = IOUtils.readResource("/com/fr/general/locale/" + name);
- try {
- properties.load(inputStream);
- } catch (IOException e) {
- FRLogger.getLogger().error(e.getMessage());
- }
- return properties;
- }
-
/**
* 保存当前编辑的国际化
*
- *
- * @date 2014-9-30-下午3:10:30
*/
public void save() {
Env env = FRContext.getCurrentEnv();
diff --git a/designer_base/src/com/fr/design/formula/FormulaPane.java b/designer_base/src/com/fr/design/formula/FormulaPane.java
index d7e3f21be..9aec1972a 100644
--- a/designer_base/src/com/fr/design/formula/FormulaPane.java
+++ b/designer_base/src/com/fr/design/formula/FormulaPane.java
@@ -32,10 +32,12 @@ import javax.swing.event.ListSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.*;
+
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Locale;
+import java.util.Set;
/**
* 公式编辑面板
* @editor zhou
@@ -60,29 +62,16 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
public FormulaPane() {
initComponents();
}
-
- protected void initComponents() {
- this.setLayout(new BorderLayout(4, 4));
-
- // text
- JPanel textPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
- this.add(textPane, BorderLayout.CENTER);
-
- JPanel checkBoxandbuttonPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
-
- UILabel formulaLabel = new UILabel(Inter.getLocText("FormulaD-Input_formula_in_the_text_area_below") + ":"
- + " ");
- formulaLabel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
- formulaTextArea = new RSyntaxTextArea();
- configFormulaArea();
- formulaTextArea.addKeyListener(this);
-
- formulaTextArea.addKeyListener(new KeyAdapter() {
+
+ private void initFormulaTextAreaKeyListener(){
+ formulaTextArea.addKeyListener(this);
+ formulaTextArea.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
formulaTextArea.setForeground(Color.black);
String text = formulaTextArea.getText();
// 判断在中文输入状态是否还包含提示符 要删掉
- String tip = "\n\n\n" + Inter.getLocText("Tips:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column");
+ //Tips:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column
+ String tip = "\n\n\n" + Inter.getLocText("FR-Designer_FormulaPane_Tips");
if(text.contains(tip)) {
text = text.substring(0, text.indexOf(tip));
insertPosition = 0;
@@ -90,9 +79,10 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
}
}
});
-
- formulaTextArea.addMouseListener(new MouseAdapter() {
-
+ }
+
+ private void initFormulaTextAreaMouseListener(){
+ formulaTextArea.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
insertPosition = formulaTextArea.getCaretPosition();
@@ -115,52 +105,81 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
}
}
});
- UIScrollPane formulaTextAreaScrollPane = new UIScrollPane(formulaTextArea);
- formulaTextAreaScrollPane.setBorder(null);
- textPane.add(formulaLabel, BorderLayout.NORTH);
- textPane.add(formulaTextAreaScrollPane, BorderLayout.CENTER);
- textPane.add(checkBoxandbuttonPane, BorderLayout.SOUTH);
-
- // tipsPane
- JPanel tipsPane = new JPanel(new BorderLayout(4, 4));
- this.add(tipsPane, BorderLayout.EAST);
-
- JPanel searchPane = new JPanel(new BorderLayout(4, 4));
- searchPane.add(keyWordTextField, BorderLayout.CENTER);
- UIButton searchButton = new UIButton(Inter.getLocText("Search"));
- searchPane.add(searchButton, BorderLayout.EAST);
- tipsPane.add(searchPane, BorderLayout.NORTH);
-
- keyWordTextField.addKeyListener(new KeyListener() {
-
+ }
+
+ private void initFormulaTextArea(){
+ formulaTextArea = new RSyntaxTextArea();
+ configFormulaArea();
+ initFormulaTextAreaKeyListener();
+ initFormulaTextAreaMouseListener();
+ }
+
+ private void initKeyWordTextFieldKeyListener(){
+ keyWordTextField.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
-
@Override
public void keyReleased(KeyEvent e) {
}
-
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
String toFind = keyWordTextField.getText();
search(toFind, false);
-
fixFunctionNameList();
e.consume();
}
}
});
+ }
+
+ private void initTipsPane(){
+ // tipsPane
+ JPanel tipsPane = new JPanel(new BorderLayout(4, 4));
+ this.add(tipsPane, BorderLayout.EAST);
+ JPanel searchPane = new JPanel(new BorderLayout(4, 4));
+ searchPane.add(keyWordTextField, BorderLayout.CENTER);
+ UIButton searchButton = new UIButton(Inter.getLocText("FR-Designer_FormulaPane_Search"));
+ searchPane.add(searchButton, BorderLayout.EAST);
+ tipsPane.add(searchPane, BorderLayout.NORTH);
+ initKeyWordTextFieldKeyListener();
tipsList = new JList(listModel);
tipsList.addMouseListener(new DoubleClick());
UIScrollPane tipsScrollPane = new UIScrollPane(tipsList);
tipsScrollPane.setPreferredSize(new Dimension(170, 75));
tipsScrollPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, UIConstants.ARC));
-
tipsPane.add(tipsScrollPane, BorderLayout.CENTER);
+ searchButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String toFind = keyWordTextField.getText();
+ search(toFind, false);
+ formulaTextArea.requestFocusInWindow();
+ fixFunctionNameList();
+ }
+ });
+ }
+
+ protected void initComponents() {
+ this.setLayout(new BorderLayout(4, 4));
+ // text
+ JPanel textPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
+ this.add(textPane, BorderLayout.CENTER);
+ JPanel checkBoxandbuttonPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
+ UILabel formulaLabel = new UILabel(Inter.getLocText("FormulaD-Input_formula_in_the_text_area_below") + ":"
+ + " ");
+ formulaLabel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
+ initFormulaTextArea();
+
+ UIScrollPane formulaTextAreaScrollPane = new UIScrollPane(formulaTextArea);
+ formulaTextAreaScrollPane.setBorder(null);
+ textPane.add(formulaLabel, BorderLayout.NORTH);
+ textPane.add(formulaTextAreaScrollPane, BorderLayout.CENTER);
+ textPane.add(checkBoxandbuttonPane, BorderLayout.SOUTH);
+ initTipsPane();
UIButton checkValidButton = new UIButton(Inter.getLocText("FormulaD-Check_Valid"));
checkValidButton.addActionListener(checkValidActionListener);
@@ -169,20 +188,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
checkBoxPane.setPreferredSize(new Dimension(450, 30));
checkBoxandbuttonPane.add(checkBoxPane, BorderLayout.WEST);
checkBoxandbuttonPane.add(checkValidButton, BorderLayout.EAST);
-
extendCheckBoxPane(checkBoxPane);
-
- searchButton.addActionListener(new ActionListener() {
-
- @Override
- public void actionPerformed(ActionEvent e) {
- String toFind = keyWordTextField.getText();
- search(toFind, false);
- formulaTextArea.requestFocusInWindow();
-
- fixFunctionNameList();
- }
- });
variableTreeAndDescriptionArea = new VariableTreeAndDescriptionArea();
this.add(variableTreeAndDescriptionArea, BorderLayout.SOUTH);
}
@@ -253,11 +259,17 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
this.formulaTextArea.setText(StringUtils.EMPTY);
}
}
-
+ //hugh:为啥会是10呢?搞不懂~~~
+ private static final int KEY_10 = 10;
+ //上下左右
+ private static final int KEY_37 = 37;
+ private static final int KEY_38 = 38;
+ private static final int KEY_39 = 39;
+ private static final int KEY_40 = 40;
@Override
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
- if (key == 38 || key == 40 || key == 37 || key == 39 || key == 10) //如果是删除符号 ,为了可读性 没有和其他按键的程序相融合
+ if (key == KEY_38 || key == KEY_40 || key == KEY_37 || key == KEY_39 || key == KEY_10) //如果是删除符号 ,为了可读性 没有和其他按键的程序相融合
{
listModel.removeAllElements();
currentPosition = formulaTextArea.getCaretPosition();
@@ -461,7 +473,8 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
String content = formula.getContent();
if (content.trim().equals("=")) {
this.formulaTextArea.setForeground(Color.gray);
- this.formulaTextArea.setText("\n\n\n" + Inter.getLocText("Tips:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column"));
+ //Tips:You_Can_Input_B1_To_Input_The_Data_Of_The_First_Row_Second_Column
+ this.formulaTextArea.setText("\n\n\n" + Inter.getLocText("FR-Designer_FormulaPane_Tips"));
this.formulaTextArea.setCaretPosition(0);
ifHasBeenWriten = 0;
this.listModel.removeAllElements();
@@ -548,22 +561,21 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
public VariableTreeAndDescriptionArea() {
this.initComponents();
}
-
- private void initComponents() {
- this.setLayout(new BorderLayout(4, 4));
-
- // Function
- JPanel functionPane = new JPanel(new BorderLayout(4, 4));
- this.add(functionPane, BorderLayout.WEST);
-
-
- functionTypeList = new QuickList(functionTypeListModel);
+
+ private void initFunctionTypeList(JPanel functionPane){
+ functionTypeList = new QuickList(functionTypeListModel);
UIScrollPane functionTypeScrollPane = new UIScrollPane(functionTypeList);
functionTypeScrollPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, UIConstants.ARC));
functionTypeScrollPane.setPreferredSize(new Dimension(140, 200));
functionPane.add(this.createNamePane(Inter.getLocText("FormulaD-Function_category") + ":", functionTypeScrollPane), BorderLayout.WEST);
- functionTypeList.setCellRenderer(new DefaultListCellRenderer() {
-
+ initTypeListCellRenderer();
+ initGroupTypeModel();
+ initTypeListSelectionListener();
+ }
+
+ private void initTypeListCellRenderer(){
+ functionTypeList.setCellRenderer(
+ new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
@@ -573,48 +585,44 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
return this;
}
});
-
- functionTypeListModel.addElement(FunctionConstants.COMMON);
- for (int i = 0; i < FunctionConstants.EMBFUNCTIONS.length; i++) {
- functionTypeListModel.addElement(FunctionConstants.EMBFUNCTIONS[i]);
- }
- functionTypeListModel.addElement(FunctionConstants.ALL);
- functionTypeListModel.addElement(FunctionConstants.CUSTOM);
- functionTypeListModel.addElement(FunctionConstants.PLUGIN);
-
- functionTypeList.addListSelectionListener(new ListSelectionListener() {
-
+ }
+
+ private void initTypeListSelectionListener(){
+ functionTypeList.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
Object selectedValue = ((JList) evt.getSource()).getSelectedValue();
if (!(selectedValue instanceof FunctionGroup)) {
return;
}
-
NameAndDescription[] nads = ((FunctionGroup) selectedValue).getDescriptions();
functionNameModel = (DefaultListModel) functionNameList.getModel();
-
functionNameModel.clear();
-
for (NameAndDescription nad : nads) {
functionNameModel.addElement(nad);
}
-
if (functionNameModel.size() > 0) {
functionNameList.setSelectedIndex(0);
functionNameList.ensureIndexIsVisible(0);
}
}
});
-
- functionNameList = new JList(new DefaultListModel());
- UIScrollPane functionNameScrollPane = new UIScrollPane(functionNameList);
- functionNameScrollPane.setPreferredSize(new Dimension(140, 200));
- functionPane.add(
- this.createNamePane(Inter.getLocText("FormulaD-Function_name") + ":", functionNameScrollPane),
- BorderLayout.CENTER);
- functionNameScrollPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, UIConstants.ARC));
-
- functionNameList.setCellRenderer(new DefaultListCellRenderer() {
+ }
+
+ private void initGroupTypeModel(){
+ functionTypeListModel.addElement(FunctionConstants.COMMON);
+ for (int i = 0; i < FunctionConstants.EMBFUNCTIONS.length; i++) {
+ functionTypeListModel.addElement(FunctionConstants.EMBFUNCTIONS[i]);
+ }
+ functionTypeListModel.addElement(FunctionConstants.ALL);
+ functionTypeListModel.addElement(FunctionConstants.CUSTOM);
+ functionTypeListModel.addElement(FunctionConstants.PLUGIN);
+
+ //hugh: 从函数分组插件中添加分组
+ FunctionConstants.addFunctionGroupFromPlugins(functionTypeListModel);
+ }
+
+ private void initFunctionNameListCellRenderer(){
+ functionNameList.setCellRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
@@ -625,8 +633,10 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
return this;
}
});
-
- functionNameList.addListSelectionListener(new ListSelectionListener() {
+ }
+
+ private void initFunctionNameListSelectionListener(){
+ functionNameList.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
Object selectedValue = functionNameList.getSelectedValue();
@@ -640,11 +650,11 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
descriptionTextArea.moveCaretPosition(0);
}
});
-
- functionNameList.addMouseListener(new MouseAdapter() {
-
+ }
+
+ private void initFunctionNameListMouseListener(){
+ functionNameList.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
-
if (evt.getClickCount() >= 2) {
Object selectedValue = functionNameList.getSelectedValue();
if (!(selectedValue instanceof NameAndDescription)) {
@@ -654,7 +664,6 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
applyText(insert);
}
-
if (SwingUtilities.isRightMouseButton(evt)) {
JPopupMenu popupMenu = new JPopupMenu();
LookDetailAction lookDetailAction = new LookDetailAction();
@@ -665,24 +674,28 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
}
}
});
-
- // vairable.
- variablesTree = new JTree();
- UIScrollPane variablesTreePane = new UIScrollPane(variablesTree);
- variablesTreePane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, UIConstants.ARC));
- this.add(this.createNamePane(
- Inter.getLocText("Variables") + ":", variablesTreePane), BorderLayout.CENTER);
- variablesTree.setRootVisible(false);
- variablesTree.setShowsRootHandles(true);
- variablesTree.addMouseListener(applyTextMouseListener);
- variablesTree.setCellRenderer(applyTreeCellRenderer);
-
- // Description
+ }
+
+ private void initFunctionNameList(JPanel functionPane){
+ functionNameList = new JList(new DefaultListModel());
+ UIScrollPane functionNameScrollPane = new UIScrollPane(functionNameList);
+ functionNameScrollPane.setPreferredSize(new Dimension(140, 200));
+ functionPane.add(
+ this.createNamePane(Inter.getLocText("FormulaD-Function_name") + ":", functionNameScrollPane),
+ BorderLayout.CENTER);
+ functionNameScrollPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, UIConstants.ARC));
+ initFunctionNameListCellRenderer();
+ initFunctionNameListSelectionListener();
+ initFunctionNameListMouseListener();
+ }
+
+ private void initDescriptionTextArea(){
+ // Description
descriptionTextArea = new UITextArea(16, 27);
UIScrollPane desScrollPane = new UIScrollPane(descriptionTextArea);
desScrollPane.setBorder(null);
- this.add(this.createNamePane(Inter.getLocText("Formula_Description") + ":", desScrollPane), BorderLayout.EAST);
+ this.add(this.createNamePane(Inter.getLocText("FR-Designer_FormulaPane_Formula_Description") + ":", desScrollPane), BorderLayout.EAST);
descriptionTextArea.setBackground(new Color(255, 255, 225));
descriptionTextArea.setLineWrap(true);
descriptionTextArea.setWrapStyleWord(true);
@@ -696,19 +709,41 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
}
});
- variablesTree.addTreeSelectionListener(new TreeSelectionListener() {
-
- public void valueChanged(TreeSelectionEvent e) {
- Object selectedValue = ((DefaultMutableTreeNode) variablesTree.getLastSelectedPathComponent()).getUserObject();
+ }
+
+ private StringBuilder getText(TextUserObject selectedValue,String path) throws IOException{
+ Reader desReader;
+ StringBuilder desBuf = new StringBuilder();
+ InputStream desInputStream = BaseUtils.readResource(path+ ((TextUserObject) selectedValue).displayText+".txt");
+ if (desInputStream == null) {
+ String description = "";
+ desReader = new StringReader(description);
+ } else {
+ desReader = new InputStreamReader(desInputStream);
+ }
+ BufferedReader reader = new BufferedReader(desReader);
+ String lineText;
+ while ((lineText = reader.readLine()) != null) {
+ if (desBuf.length() > 0) {
+ desBuf.append('\n');
+ }
+ desBuf.append(lineText);
+ }
+ reader.close();
+ desReader.close();
+ return desBuf;
+ }
+
+ private void initVariablesTreeSelectionListener(){
+ variablesTree.addTreeSelectionListener(new TreeSelectionListener() {
+ public void valueChanged(TreeSelectionEvent e) {
+ Object selectedValue = ((DefaultMutableTreeNode) variablesTree.getLastSelectedPathComponent()).getUserObject();
if (selectedValue == null) {
return;
}
-
StringBuilder desBuf = new StringBuilder();
try {
- Reader desReader;
String path;
-
Locale locale = FRContext.getLocale();
if (locale.equals(Locale.CHINA)) {
path = "/com/fr/design/insert/formula/variable/cn/";
@@ -716,43 +751,42 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
path = "/com/fr/design/insert/formula/variable/en/";
}
if (selectedValue instanceof TextUserObject) {
-
- InputStream desInputStream = BaseUtils.readResource(path
- + ((TextUserObject) selectedValue).displayText
- + ".txt");
- if (desInputStream == null) {
- String description = "";
-
- desReader = new StringReader(description);
- } else {
- desReader = new InputStreamReader(
- desInputStream);
- }
-
- BufferedReader reader = new BufferedReader(
- desReader);
- String lineText;
- while ((lineText = reader.readLine()) != null) {
- if (desBuf.length() > 0) {
- desBuf.append('\n');
- }
-
- desBuf.append(lineText);
- }
-
- reader.close();
- desReader.close();
+ desBuf = getText((TextUserObject)selectedValue,path);
}
} catch (IOException exp) {
FRContext.getLogger().error(exp.getMessage(), exp);
}
-
descriptionTextArea.setText(desBuf.toString());
-
descriptionTextArea.moveCaretPosition(0);
}
});
-
+ }
+
+ private void initVariablesTree(){
+ // vairable.
+ variablesTree = new JTree();
+ UIScrollPane variablesTreePane = new UIScrollPane(variablesTree);
+ variablesTreePane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, UIConstants.ARC));
+ this.add(this.createNamePane(
+ Inter.getLocText("FR-Designer_FormulaPane_Variables") + ":", variablesTreePane), BorderLayout.CENTER);
+ variablesTree.setRootVisible(false);
+ variablesTree.setShowsRootHandles(true);
+ variablesTree.addMouseListener(applyTextMouseListener);
+ variablesTree.setCellRenderer(applyTreeCellRenderer);
+
+ initDescriptionTextArea();
+
+ initVariablesTreeSelectionListener();
+ }
+
+ private void initComponents() {
+ this.setLayout(new BorderLayout(4, 4));
+ // Function
+ JPanel functionPane = new JPanel(new BorderLayout(4, 4));
+ this.add(functionPane, BorderLayout.WEST);
+ initFunctionTypeList(functionPane);
+ initFunctionNameList(functionPane);
+ initVariablesTree();
// 选择:
functionTypeList.setSelectedIndex(0);
}
@@ -763,7 +797,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
private class LookDetailAction extends UpdateAction {
public LookDetailAction() {
- this.setName(Inter.getLocText("Function_Detail"));
+ this.setName(Inter.getLocText("FR-Designer_FormulaPane_Function_Detail"));
this.setMnemonic('L');
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_file/preview.png"));
}
@@ -778,7 +812,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
BasicPane basicPane = new BasicPane() {
@Override
protected String title4PopupWindow() {
- return Inter.getLocText("Function_Detail");
+ return Inter.getLocText("FR-Designer_FormulaPane_Function_Detail");
}
};
basicPane.setLayout(FRGUIPaneFactory.createBorderLayout());
@@ -855,7 +889,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
return this;
}
};
-
+
public void populate(VariableResolver variableResolver) {
// varibale tree.
DefaultTreeModel variableModel = (DefaultTreeModel) variablesTree.getModel();
@@ -868,53 +902,29 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
DefaultMutableTreeNode bindCellNode = new DefaultMutableTreeNode(new TextUserObject("$$$"));
rootNode.add(bindCellNode);
}
-
- {
- MutableTreeNode tableTreeNode = new TextFolderUserObject(
- Inter.getLocText("FormulaD-Data_Fields"),
- BaseUtils.readIcon("/com/fr/design/images/dialog/table.png"),
- variableResolver.resolveColumnNames()).createMutableTreeNode();
-
- rootNode.add(tableTreeNode);
- }
-
- {
- // Set cutReport Variable
- rootNode.add(new TextFolderUserObject(
- Inter.getLocText("Variables"),
- BaseUtils.readIcon("/com/fr/design/images/dialog/variable.png"),
- variableResolver.resolveCurReportVariables()).createMutableTreeNode());
- }
-
-
- {
- rootNode.add(new TextFolderUserObject(
- Inter.getLocText(new String[]{"Datasource-Datasource", "Parameter"}),
- BaseUtils.readIcon("/com/fr/design/images/dialog/parameter.gif"),
- variableResolver.resolveTableDataParameterVariables()).createMutableTreeNode());
- }
-
-
- {
- MutableTreeNode reportParameterTreeNode = new TextFolderUserObject(
- Inter.getLocText("ParameterD-Report_Parameter"),
- BaseUtils.readIcon("/com/fr/design/images/m_report/p.gif"),
- variableResolver.resolveReportParameterVariables()).createMutableTreeNode();
-
- rootNode.add(reportParameterTreeNode);
- }
-
- {
- MutableTreeNode globalParameterTreeNode = new TextFolderUserObject(
- Inter.getLocText("M_Server-Global_Parameters"),
- BaseUtils.readIcon("/com/fr/design/images/dialog/parameter.gif"),
- variableResolver.resolveGlobalParameterVariables()).createMutableTreeNode();
- rootNode.add(globalParameterTreeNode);
- }
-
-
+
+ rootNode.add(new TextFolderUserObject(Inter.getLocText("FormulaD-Data_Fields"),
+ BaseUtils.readIcon("/com/fr/design/images/dialog/table.png"),
+ variableResolver.resolveColumnNames()).createMutableTreeNode());
+
+ // Set cutReport Variable
+ rootNode.add(new TextFolderUserObject(Inter.getLocText("FR-Designer_FormulaPane_Variables"),
+ BaseUtils.readIcon("/com/fr/design/images/dialog/variable.png"),
+ variableResolver.resolveCurReportVariables()).createMutableTreeNode());
+
+ rootNode.add(new TextFolderUserObject(Inter.getLocText(new String[]{"Datasource-Datasource", "Parameter"}),
+ BaseUtils.readIcon("/com/fr/design/images/dialog/parameter.gif"),
+ variableResolver.resolveTableDataParameterVariables()).createMutableTreeNode());
+
+ rootNode.add(new TextFolderUserObject(Inter.getLocText("ParameterD-Report_Parameter"),
+ BaseUtils.readIcon("/com/fr/design/images/m_report/p.gif"),
+ variableResolver.resolveReportParameterVariables()).createMutableTreeNode());
+
+ rootNode.add(new TextFolderUserObject(Inter.getLocText("M_Server-Global_Parameters"),
+ BaseUtils.readIcon("/com/fr/design/images/dialog/parameter.gif"),
+ variableResolver.resolveGlobalParameterVariables()).createMutableTreeNode());
+
variableModel.reload();
-
// Expand
for (int row = 0; row < this.variablesTree.getRowCount(); row++) {
this.variablesTree.expandRow(row);
@@ -993,6 +1003,6 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula{
buffer.append("|");
buffer.append("\n");
}
- System.out.println(buffer.toString());
+ FRContext.getLogger().debug(buffer.toString());
}
}
\ No newline at end of file
diff --git a/designer_base/src/com/fr/design/formula/FunctionConstants.java b/designer_base/src/com/fr/design/formula/FunctionConstants.java
index cfb983dd7..8a0675897 100644
--- a/designer_base/src/com/fr/design/formula/FunctionConstants.java
+++ b/designer_base/src/com/fr/design/formula/FunctionConstants.java
@@ -11,6 +11,8 @@ import com.fr.stable.EncodeConstants;
import com.fr.stable.OperatingSystem;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
+import com.fr.stable.fun.FunctionDefContainer;
+import com.fr.stable.fun.mark.Mutable;
import com.fr.stable.script.Function;
import com.fr.stable.script.FunctionDef;
@@ -23,8 +25,49 @@ import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
+import javax.swing.DefaultListModel;
+
public abstract class FunctionConstants {
+
+ /**
+ * 将函数分组插件中的函数添加到对应的列表中
+ * @param listModel
+ */
+ public static void addFunctionGroupFromPlugins(DefaultListModel listModel){
+ //hugh:自定义函数分组
+ Set containers = ExtraClassManager.getInstance().getArray(FunctionDefContainer.MARK_STRING);
+ if(!containers.isEmpty()){
+ for(Mutable container : containers){
+ listModel.addElement(createFunctionGroup((FunctionDefContainer)container));
+ }
+ }
+ }
+
+ /**
+ * 创建一个新的分组
+ * @param container
+ * @return
+ */
+ private static FunctionGroup createFunctionGroup(final FunctionDefContainer container){
+ return new FunctionGroup() {
+ @Override
+ public String getGroupName() {
+ return container.getGroupName();
+ }
+ @Override
+ public NameAndDescription[] getDescriptions() {
+ FunctionDef[] fs = container.getFunctionDefs();
+ int count = fs.length;
+ FunctionDefNAD[] nads = new FunctionDefNAD[count];
+ for (int i = 0; i < count; i ++) {
+ nads[i] = new FunctionDefNAD(fs[i]);
+ }
+ return nads;
+ }
+ };
+ }
+
public static FunctionGroup PLUGIN = new FunctionGroup() {
@Override
public String getGroupName() {
@@ -96,7 +139,13 @@ public abstract class FunctionConstants {
}
Collections.addAll(all, PLUGIN.getDescriptions());
Collections.addAll(all, CUSTOM.getDescriptions());
-
+ //hugh:自定义函数分组
+ Set containers = ExtraClassManager.getInstance().getArray(FunctionDefContainer.MARK_STRING);
+ if(!containers.isEmpty()){
+ for(Mutable container : containers){
+ Collections.addAll(all,createFunctionGroup(((FunctionDefContainer)container)).getDescriptions());
+ }
+ }
java.util.Collections.sort(all, NameAndDescriptionComparator);
return all.toArray(new NameAndDescription[all.size()]);
diff --git a/designer_base/src/com/fr/design/formula/FunctionDefNAD.java b/designer_base/src/com/fr/design/formula/FunctionDefNAD.java
index c7c2177b5..715660169 100644
--- a/designer_base/src/com/fr/design/formula/FunctionDefNAD.java
+++ b/designer_base/src/com/fr/design/formula/FunctionDefNAD.java
@@ -6,7 +6,7 @@ import com.fr.stable.StringUtils;
public class FunctionDefNAD extends AbstractNameAndDescription {
private FunctionDef def;
- FunctionDefNAD(FunctionDef def) {
+ public FunctionDefNAD(FunctionDef def) {
this.def = def;
}
diff --git a/designer_base/src/com/fr/design/fun/ConnectionProvider.java b/designer_base/src/com/fr/design/fun/ConnectionProvider.java
index c6bd2fca2..766f7d414 100644
--- a/designer_base/src/com/fr/design/fun/ConnectionProvider.java
+++ b/designer_base/src/com/fr/design/fun/ConnectionProvider.java
@@ -12,7 +12,8 @@ public interface ConnectionProvider extends Mutable {
public static final String XML_TAG = "ConnectionProvider";
- int CURRENT_LEVEL = 1;
+ // 2016-12-14 1 -> 2 , 增加connection.feature方法导致不兼容.
+ int CURRENT_LEVEL = 2;
/**
* 数据连接弹出菜单的名字
diff --git a/designer_base/src/com/fr/design/fun/ExtraButtonToolBarProvider.java b/designer_base/src/com/fr/design/fun/ExtraButtonToolBarProvider.java
new file mode 100644
index 000000000..09bff1f1a
--- /dev/null
+++ b/designer_base/src/com/fr/design/fun/ExtraButtonToolBarProvider.java
@@ -0,0 +1,41 @@
+package com.fr.design.fun;
+
+import com.fr.form.ui.Widget;
+import com.fr.stable.fun.mark.Mutable;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+ * 报表工具栏设计器端拓展,用于配置按钮额外属性
+ * Created by harry on 2016-12-23.
+ */
+public interface ExtraButtonToolBarProvider extends Mutable {
+
+ String XML_TAG = "ExtraButtonToolBarProvider";
+
+ int CURRENT_LEVEL = 1;
+
+ /**
+ * 用于添加属性面板
+ *
+ * @param centerPane 面板
+ */
+ void updateCenterPane(JPanel centerPane);
+
+ /**
+ * 更新界面
+ *
+ * @param widget 控件
+ * @param card 卡片布局
+ * @param centerPane 面板
+ */
+ void populate(Widget widget, CardLayout card, JPanel centerPane);
+
+ /**
+ * 保存界面设置
+ *
+ * @param widget 控件
+ */
+ void update(Widget widget);
+}
diff --git a/designer_base/src/com/fr/design/fun/impl/AbstractExtraButtonToolBarProvider.java b/designer_base/src/com/fr/design/fun/impl/AbstractExtraButtonToolBarProvider.java
new file mode 100644
index 000000000..064d72d1c
--- /dev/null
+++ b/designer_base/src/com/fr/design/fun/impl/AbstractExtraButtonToolBarProvider.java
@@ -0,0 +1,19 @@
+package com.fr.design.fun.impl;
+
+import com.fr.design.fun.ExtraButtonToolBarProvider;
+import com.fr.stable.fun.impl.AbstractProvider;
+import com.fr.stable.fun.mark.API;
+
+/**
+ * Created by harry on 2016-12-23.
+ */
+@API(level = ExtraButtonToolBarProvider.CURRENT_LEVEL)
+public abstract class AbstractExtraButtonToolBarProvider extends AbstractProvider implements ExtraButtonToolBarProvider {
+ public int currentAPILevel() {
+ return ExtraButtonToolBarProvider.CURRENT_LEVEL;
+ }
+
+ public String mark4Provider() {
+ return getClass().getName();
+ }
+}
diff --git a/designer_base/src/com/fr/design/gui/icombobox/UIComboBox.java b/designer_base/src/com/fr/design/gui/icombobox/UIComboBox.java
index d6d149674..350b99ead 100644
--- a/designer_base/src/com/fr/design/gui/icombobox/UIComboBox.java
+++ b/designer_base/src/com/fr/design/gui/icombobox/UIComboBox.java
@@ -160,6 +160,14 @@ public class UIComboBox extends JComboBox implements UIObserver, GlobalNameObser
uiObserverListener = listener;
}
+ public void removeChangeListener(){
+ uiObserverListener = null;
+ }
+
+ public UIObserverListener getUiObserverListener(){
+ return uiObserverListener;
+ }
+
/**
* @return
*/
diff --git a/designer_base/src/com/fr/design/style/color/ColorPicker.java b/designer_base/src/com/fr/design/style/color/ColorPicker.java
index 8807e1f40..e91968675 100644
--- a/designer_base/src/com/fr/design/style/color/ColorPicker.java
+++ b/designer_base/src/com/fr/design/style/color/ColorPicker.java
@@ -7,11 +7,14 @@ package com.fr.design.style.color;
import com.fr.base.BaseUtils;
import com.fr.general.FRLogger;
+import javax.swing.*;
import java.awt.*;
-import java.awt.event.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
-import javax.swing.*;
/**
* 取色框
diff --git a/designer_base/src/com/fr/design/style/color/ColorSelectBox.java b/designer_base/src/com/fr/design/style/color/ColorSelectBox.java
index f926775ee..2dd5d51c3 100644
--- a/designer_base/src/com/fr/design/style/color/ColorSelectBox.java
+++ b/designer_base/src/com/fr/design/style/color/ColorSelectBox.java
@@ -63,6 +63,7 @@ public class ColorSelectBox extends AbstractSelectBox implements UIObserv
fireDisplayComponent(ColorBackground.getInstance(color));
}
});
+ colorPane.setColor(color);
return colorPane;
}
diff --git a/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane.java b/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane.java
index 4e0443c9f..5a2f3a4b9 100644
--- a/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane.java
+++ b/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane.java
@@ -245,7 +245,7 @@ public class GisMapTableDataContentPane extends FurtherBasicBeanPane{
while(names.hasNext()) {
Object name = names.next();
String layName = editingAttr.getLayerTo(Utils.objectToString(name));
- if(ArrayUtils.contains(ChartConstants.NONE_KEYS, layName)) {// kunsnat: 考虑切换设计器语言.
+ if(ArrayUtils.contains(ChartConstants.getNoneKeys(), layName)) {// kunsnat: 考虑切换设计器语言.
layName = StringUtils.EMPTY;
}
list.add(new Object[]{name, layName});
@@ -230,7 +230,7 @@ public class MapCubeLayerPane extends BasicBeanPane{
while(names.hasNext()) {
Object name = names.next();
String layName = editingAttr.getLayerTo(Utils.objectToString(name));
- if(ArrayUtils.contains(ChartConstants.NONE_KEYS, layName)) {// kunsnat: 考虑切换设计器语言.
+ if(ArrayUtils.contains(ChartConstants.getNoneKeys(), layName)) {// kunsnat: 考虑切换设计器语言.
layName = StringUtils.EMPTY;
}
list.add(new Object[]{name, layName});
diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java
index 91b6bba3c..4a18611fa 100644
--- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java
+++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java
@@ -425,6 +425,8 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen
private void deleteAButton() {
//先重构属性,在重构面板,否则面板在重构过程中,会重新将属性中的切换图表加到indexList中,导致面板无法删除
+ //记录改变前的plotID
+ String lastPlotID = editingCollection == null ? StringUtils.EMPTY : editingCollection.getSelectedChart().getPlot().getPlotID();
if (editingCollection != null) {
int count = editingCollection.getChartCount();
for (int i = 0; i < count; i++) {
@@ -447,6 +449,11 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen
checkoutChange();
relayoutPane();
+
+ //重构面板
+ if (parent != null ){
+ parent.reLayoutEditPane(lastPlotID, editingCollection);
+ }
}
private void relayoutPane() {
diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java
index a3a028ef8..172d040f3 100644
--- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java
+++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java
@@ -206,6 +206,8 @@ public class ChartTypePane extends AbstractChartAttrPane{
}
//第一步就是重构cardNames
cardNames = ChartTypeInterfaceManager.getInstance().getTitle4PopupWindow(chartID);
+ //下拉框重构开始。为了防止重构是触发update
+ ((FlexibleComboBox)jcb).setItemEvenType(ItemEventType.REACTOR);
//重构下拉框选项
reactorComboBox();
//重新选择选中的下拉项
@@ -213,6 +215,8 @@ public class ChartTypePane extends AbstractChartAttrPane{
String plotID = chart.getPlot().getPlotID();
Object item = ChartTypeInterfaceManager.getInstance().getTitle4PopupWindow(chartID, plotID);
jcb.setSelectedItem(item);
+ //下拉框重构结束
+ ((FlexibleComboBox)jcb).setItemEvenType(ItemEventType.DEFAULT);
//重新选中
checkPlotPane();
}
@@ -223,13 +227,10 @@ public class ChartTypePane extends AbstractChartAttrPane{
}
private void reactorComboBox() {
- FlexibleComboBox fcb = (FlexibleComboBox)jcb;
- fcb.setItemEvenType(ItemEventType.REACTOR);
- fcb.removeAllItems();
+ jcb.removeAllItems();
for (int i = 0; i < this.cardNames.length; i++) {
- fcb.addItem(cardNames[i]);
+ jcb.addItem(cardNames[i]);
}
- fcb.setItemEvenType(ItemEventType.DEFAULT);
}
@Override
diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/BubblePlotTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/BubblePlotTableDataContentPane.java
index 73c5f1b18..2d404196c 100644
--- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/BubblePlotTableDataContentPane.java
+++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/BubblePlotTableDataContentPane.java
@@ -137,7 +137,7 @@ public class BubblePlotTableDataContentPane extends AbstractTableDataContentPane
Object resultY = yCombox.getSelectedItem();
Object resultSize = bubbleSize.getSelectedItem();
- if(resultName == null || ArrayUtils.contains(ChartConstants.NONE_KEYS, resultName)) {
+ if(resultName == null || ArrayUtils.contains(ChartConstants.getNoneKeys(), resultName)) {
definition.setSeriesName(StringUtils.EMPTY);
} else {
definition.setSeriesName(resultName.toString());
diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotTableDataContentPane.java
index a8c1bc1f8..6de692f6f 100644
--- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotTableDataContentPane.java
+++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotTableDataContentPane.java
@@ -113,7 +113,7 @@ public class CategoryPlotTableDataContentPane extends AbstractTableDataContentPa
}
Object categoryName = categoryCombox.getSelectedItem();
- if(ArrayUtils.contains(ChartConstants.NONE_KEYS, categoryName)) {
+ if(ArrayUtils.contains(ChartConstants.getNoneKeys(), categoryName)) {
dataDefinition.setCategoryName(StringUtils.EMPTY);
} else {
dataDefinition.setCategoryName(categoryName == null ? null : categoryName.toString());
diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/StockPlotTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/StockPlotTableDataContentPane.java
index fa9489794..b2928d3a8 100644
--- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/StockPlotTableDataContentPane.java
+++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/StockPlotTableDataContentPane.java
@@ -160,7 +160,7 @@ public class StockPlotTableDataContentPane extends AbstractTableDataContentPane
openLabel.setText(stockLabel.getOpenLabel());
highLabel.setText(stockLabel.getHighLabel());
lowLabel.setText(stockLabel.getLowLabel());
- closeLabel.setText(stockLabel.getLowLabel());
+ closeLabel.setText(stockLabel.getCloseLabel());
combineCustomEditValue(axisBox, stock.getCateTime());
combineCustomEditValue(volumeBox, stock.getVolumnString());
diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/XYScatterPlotTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/XYScatterPlotTableDataContentPane.java
index c27b4322c..8abb46bf5 100644
--- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/XYScatterPlotTableDataContentPane.java
+++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/XYScatterPlotTableDataContentPane.java
@@ -107,7 +107,7 @@ public class XYScatterPlotTableDataContentPane extends AbstractTableDataContentP
Object resultX = xCombox.getSelectedItem();
Object resultY = yCombox.getSelectedItem();
- if(resultName == null || ArrayUtils.contains(ChartConstants.NONE_KEYS, resultName)) {
+ if(resultName == null || ArrayUtils.contains(ChartConstants.getNoneKeys(), resultName)) {
definition.setSeriesName(StringUtils.EMPTY);
} else {
definition.setSeriesName(resultName.toString());
diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartTextAttrPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartTextAttrPane.java
index a52fe010d..5b1ba5aee 100644
--- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartTextAttrPane.java
+++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartTextAttrPane.java
@@ -11,6 +11,7 @@ import com.fr.base.BaseUtils;
import com.fr.base.Utils;
import com.fr.chart.base.TextAttr;
import com.fr.design.constants.LayoutConstants;
+import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.ibutton.UIColorButton;
import com.fr.design.gui.ibutton.UIToggleButton;
import com.fr.design.gui.icombobox.UIComboBox;
@@ -71,6 +72,8 @@ public class ChartTextAttrPane extends BasicPane {
}
public void populate(FRFont frFont) {
+ UIObserverListener listener = fontNameComboBox == null ? null : fontNameComboBox.getUiObserverListener();
+ removeAllComboBoxListener();
if (frFont == null) {
return;
}
@@ -83,6 +86,19 @@ public class ChartTextAttrPane extends BasicPane {
if (fontColor != null) {
fontColor.setColor(frFont.getForeground());
}
+
+ //更新结束后,注册监听器
+ registerAllComboBoxListener(listener);
+ }
+
+ private void removeAllComboBoxListener() {
+ fontNameComboBox.removeChangeListener();
+ fontSizeComboBox.removeChangeListener();
+ }
+
+ private void registerAllComboBoxListener(UIObserverListener listener) {
+ fontNameComboBox.registerChangeListener(listener);
+ fontSizeComboBox.registerChangeListener(listener);
}
/**
diff --git a/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java b/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java
index cb111bb92..6187bbd48 100644
--- a/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java
+++ b/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java
@@ -18,7 +18,6 @@ import com.fr.form.ui.*;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import com.fr.stable.ArrayUtils;
-import com.fr.stable.OperatingSystem;
import javax.swing.*;
import java.awt.*;
@@ -27,14 +26,14 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-public class FormParaWidgetPane extends JPanel{
- private static FormParaWidgetPane THIS;
- private List predifinedwidgeList = new ArrayList();
+public class FormParaWidgetPane extends JPanel {
+ private static FormParaWidgetPane THIS;
+ private List predifinedwidgeList = new ArrayList();
private JWindow chartTypeWindow;
private JWindow widgetTypeWindow;
private WidgetOption[] widgetOptions = null;
- private WidgetOption[] chartOptions = null;
+ private WidgetOption[] chartOptions = null;
private WidgetOption[] layoutOptions = null;
private int widgetButtonWidth = 22;
private int widgetButtonHeight = 20;
@@ -46,49 +45,49 @@ public class FormParaWidgetPane extends JPanel{
//预定义控件最多显示20行
private int preWidgetShowMaxRow = 20;
//显示8个图表组件
- private static final int commonChartNum = 8;
+ private static final int COMMON_CHAR_NUM = 8;
//显示10个普通控件
private int commonWidgetNum = 10;
private JSeparator jSeparatorPara;
private JSeparator jSeparatorChart;
private JSeparator jSeparatorLayout;
- private UILabel paraLabel ;
-
- private FormDesigner designer;
-
- public static final FormParaWidgetPane getInstance(FormDesigner designer) {
- if(THIS == null) {
- THIS = new FormParaWidgetPane();
- }
- THIS.designer = designer;
- THIS.setTarget(designer);
- return THIS;
- }
-
- public FormParaWidgetPane() {
- setLayout(new FlowLayout(FlowLayout.LEFT));
+ private UILabel paraLabel;
+
+ private FormDesigner designer;
+
+ public static final FormParaWidgetPane getInstance(FormDesigner designer) {
+ if (THIS == null) {
+ THIS = new FormParaWidgetPane();
+ }
+ THIS.designer = designer;
+ THIS.setTarget(designer);
+ return THIS;
+ }
+
+ public FormParaWidgetPane() {
+ setLayout(new FlowLayout(FlowLayout.LEFT));
DesignerContext.getDesignerFrame().getCenterTemplateCardPane().addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
- if (FormParaWidgetPane.this.getParent() != null) {
- JPanel fother = (JPanel)FormParaWidgetPane.this.getParent();
+ if (FormParaWidgetPane.this.getParent() != null) {
+ JPanel fother = (JPanel) FormParaWidgetPane.this.getParent();
int delta_wdith = 0;
- for (int i = 0; i < fother.getComponentCount() - 1; i ++) {
+ for (int i = 0; i < fother.getComponentCount() - 1; i++) {
delta_wdith += fother.getComponent(i).getWidth();
}
-
- if(delta_wdith == 0){
- return;
+
+ if (delta_wdith == 0) {
+ return;
}
-
+
Dimension d = fother.getSize();
- setPreferredSize(new Dimension(d.width - delta_wdith, d.height));
- LayoutUtils.layoutContainer(fother);
- }
+ setPreferredSize(new Dimension(d.width - delta_wdith, d.height));
+ LayoutUtils.layoutContainer(fother);
+ }
}
});
initFormParaComponent();
- }
+ }
private void initFormParaComponent() {
@@ -97,16 +96,16 @@ public class FormParaWidgetPane extends JPanel{
JPanel paraPane = new JPanel(new FlowLayout());
ToolBarButton paraButton = new paraButton(FormWidgetOption.PARAMETERCONTAINER);
paraPane.add(paraButton);
- add(createNormalCombinationPane(paraPane,Inter.getLocText("FR-Designer_Parameter")));
+ add(createNormalCombinationPane(paraPane, Inter.getLocText("FR-Designer_Parameter")));
jSeparatorPara = createJSeparator();
add(jSeparatorPara);
-
+
JPanel layoutPane = new JPanel(new FlowLayout());
- for(WidgetOption option : loadLayoutOptions()){
+ for (WidgetOption option : loadLayoutOptions()) {
layoutPane.add(new ToolBarButton(option));
}
layoutPane.add(new ToolBarButton(FormWidgetOption.ELEMENTCASE));
- add(createNormalCombinationPane(layoutPane,Inter.getLocText("FR-Designer_Layout_Block_Blank")));
+ add(createNormalCombinationPane(layoutPane, Inter.getLocText("FR-Designer_Layout_Block_Blank")));
jSeparatorLayout = createJSeparator();
add(jSeparatorLayout);
@@ -114,8 +113,8 @@ public class FormParaWidgetPane extends JPanel{
int totalChartNums = loadChartOptions().length;
if (totalChartNums > 0) {
JPanel chartTypePane = new JPanel(new FlowLayout());
- for (int i = 0;i < commonChartNum ;i++) {
- chartTypePane.add( new ToolBarButton(loadChartOptions()[i]));
+ for (int i = 0; i < COMMON_CHAR_NUM; i++) {
+ chartTypePane.add(new ToolBarButton(loadChartOptions()[i]));
}
add(createChartCombinationPane(chartTypePane, Inter.getLocText("FR-Designer-Form-ToolBar_Chart")));
jSeparatorChart = createJSeparator();
@@ -123,115 +122,113 @@ public class FormParaWidgetPane extends JPanel{
}
JPanel widgetPane = new JPanel(new FlowLayout());
- for (int i = 0;i < commonWidgetNum;i++) {
+ for (int i = 0; i < commonWidgetNum; i++) {
widgetPane.add(new ToolBarButton(loadWidgetOptions()[i]));
}
widgetPane.add(createJSeparator(20));
loadPredefinedWidget();
- int num = Math.min(predifinedwidgeList.size(),preWidgetShowMaxNum);
- for (int i = 0 ;i < num ;i++) {
+ int num = Math.min(predifinedwidgeList.size(), preWidgetShowMaxNum);
+ for (int i = 0; i < num; i++) {
widgetPane.add(new ToolBarButton(predifinedwidgeList.get(i)));
}
add(createWidgetCombinationPane(widgetPane, Inter.getLocText("FR-Designer-Form-ToolBar_Widget")));
add(createJSeparator());
}
-
- private void loadPredefinedWidget() {
- predifinedwidgeList.clear();
- if(designer != null) {
- WidgetOption[] designerPre = designer.getDesignerMode().getPredefinedWidgetOptions();
- for(int i = 0; i < designerPre.length; i++) {
- predifinedwidgeList.add(designerPre[i]);
- }
- }
- WidgetManagerProvider mgr = WidgetManager.getProviderInstance();
- Iterator nameIt = mgr.getWidgetConfigNameIterator();
- while (nameIt.hasNext()) {
- String name = nameIt.next();
- WidgetConfig widgetConfig = mgr.getWidgetConfig(name);
- if (widgetConfig instanceof UserDefinedWidgetConfig) {
- Widget widget = ((UserDefinedWidgetConfig) widgetConfig).getWidget();
- String widgetClassName = widget.getClass().getName();
- if (isButtonWidget(widgetClassName)) {
- // ...
- continue;
- }
- if (!XCreatorUtils.createXCreator(widget).canEnterIntoParaPane()){
+
+ private void loadPredefinedWidget() {
+ predifinedwidgeList.clear();
+ if (designer != null) {
+ WidgetOption[] designerPre = designer.getDesignerMode().getPredefinedWidgetOptions();
+ for (int i = 0; i < designerPre.length; i++) {
+ predifinedwidgeList.add(designerPre[i]);
+ }
+ }
+ WidgetManagerProvider mgr = WidgetManager.getProviderInstance();
+ Iterator nameIt = mgr.getWidgetConfigNameIterator();
+ while (nameIt.hasNext()) {
+ String name = nameIt.next();
+ WidgetConfig widgetConfig = mgr.getWidgetConfig(name);
+ if (widgetConfig instanceof UserDefinedWidgetConfig) {
+ Widget widget = ((UserDefinedWidgetConfig) widgetConfig).getWidget();
+ String widgetClassName = widget.getClass().getName();
+ if (isButtonWidget(widgetClassName)) {
+ // ...
+ continue;
+ }
+ if (!XCreatorUtils.createXCreator(widget).canEnterIntoParaPane()) {
//预定义控件工具栏这儿不显示工具栏中没有的预定义控件
continue;
}
- predifinedwidgeList.add(new UserDefinedWidgetOption(name));
- }
- }
- }
+ predifinedwidgeList.add(new UserDefinedWidgetOption(name));
+ }
+ }
+ }
private boolean isButtonWidget(String widgetClassName) {
return widgetClassName.endsWith("DeleteRowButton") || widgetClassName.endsWith("AppendRowButton") || widgetClassName.endsWith("TreeNodeToogleButton");
}
- private void setTarget(FormDesigner designer) {
- if (designer == null) {
- return;
- }
+ private void setTarget(FormDesigner designer) {
+ if (designer == null) {
+ return;
+ }
initFormParaComponent();
- }
+ }
- private JPanel createNormalCombinationPane(JComponent jComponent,String typeName){
- JPanel reportPane = new JPanel(new BorderLayout(17,5));
- reportPane.add(jComponent,BorderLayout.CENTER);
+ private JPanel createNormalCombinationPane(JComponent jComponent, String typeName) {
+ JPanel reportPane = new JPanel(new BorderLayout(17, 5));
+ reportPane.add(jComponent, BorderLayout.CENTER);
JPanel labelPane = new JPanel(new BorderLayout());
- UILabel label = new UILabel(typeName,UILabel.CENTER);
- if(ComparatorUtils.equals(Inter.getLocText("FR-Designer_Parameter"),typeName )){
+ UILabel label = new UILabel(typeName, UILabel.CENTER);
+ if (ComparatorUtils.equals(Inter.getLocText("FR-Designer_Parameter"), typeName)) {
paraLabel = label;
}
- labelPane.add(label,BorderLayout.CENTER);
- reportPane.add(labelPane,BorderLayout.SOUTH);
- reportPane.setPreferredSize(new Dimension((int)reportPane.getPreferredSize().getWidth(),(int)reportPane.getPreferredSize().getHeight()));
+ labelPane.add(label, BorderLayout.CENTER);
+ reportPane.add(labelPane, BorderLayout.SOUTH);
+ reportPane.setPreferredSize(new Dimension((int) reportPane.getPreferredSize().getWidth(), (int) reportPane.getPreferredSize().getHeight()));
return reportPane;
}
- private JPanel createChartCombinationPane(JComponent jComponent,String typeName){
- JPanel chartPane = new JPanel(new BorderLayout(17,5));
+ private JPanel createChartCombinationPane(JComponent jComponent, String typeName) {
+ JPanel chartPane = new JPanel(new BorderLayout(17, 5));
chartPane.add(jComponent, BorderLayout.CENTER);
JPanel labelPane = new JPanel(new BorderLayout());
- labelPane.add(new UILabel(typeName,UILabel.CENTER),BorderLayout.CENTER);
+ labelPane.add(new UILabel(typeName, UILabel.CENTER), BorderLayout.CENTER);
UIButton chartPopUpButton = createPopUpButton();
chartPopUpButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
- if(chartTypeWindow == null) {
- JPanel componentsPara = new JPanel(new FlowLayout(FlowLayout.LEFT));
- WidgetOption[] chartOptions = loadChartOptions();
- for (WidgetOption chartOption : chartOptions) {
- componentsPara.add( new ToolBarButton(chartOption));
- }
- int x = commonChartNum * (widgetButtonWidth + smallGAP);
- int y = (int)Math.ceil(chartOptions.length/((double)commonChartNum)) * (widgetButtonHeight + smallGAP);
- componentsPara.setPreferredSize(new Dimension(x,y));
- chartTypeWindow = new PopUpWindow(componentsPara, Inter.getLocText("FR-Designer-Form-ToolBar_Chart"));
- chartTypeWindow.setLocation((int)jSeparatorLayout.getLocationOnScreen().getX() + 1, (int)jSeparatorLayout.getLocationOnScreen().getY());
- chartTypeWindow.setSize(chartTypeWindow.getPreferredSize());
+ JPanel componentsPara = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ WidgetOption[] chartOptions = loadChartOptions();
+ for (WidgetOption chartOption : chartOptions) {
+ componentsPara.add(new ToolBarButton(chartOption));
}
+ int x = COMMON_CHAR_NUM * (widgetButtonWidth + smallGAP);
+ int y = (int) Math.ceil(chartOptions.length / ((double) COMMON_CHAR_NUM)) * (widgetButtonHeight + smallGAP);
+ componentsPara.setPreferredSize(new Dimension(x, y));
+ chartTypeWindow = new PopUpWindow(componentsPara, Inter.getLocText("FR-Designer-Form-ToolBar_Chart"));
+ chartTypeWindow.setLocation((int) jSeparatorLayout.getLocationOnScreen().getX() + 1, (int) jSeparatorLayout.getLocationOnScreen().getY());
+ chartTypeWindow.setSize(chartTypeWindow.getPreferredSize());
chartTypeWindow.setVisible(true);
}
});
- labelPane.add(chartPopUpButton,BorderLayout.EAST);
- chartPane.add(labelPane,BorderLayout.SOUTH);
+ labelPane.add(chartPopUpButton, BorderLayout.EAST);
+ chartPane.add(labelPane, BorderLayout.SOUTH);
return chartPane;
}
- private JPanel createWidgetCombinationPane(JComponent jComponent,String typeName){
- JPanel widgetPane = new JPanel(new BorderLayout(17,5));
- widgetPane.add(jComponent,BorderLayout.CENTER);
+ private JPanel createWidgetCombinationPane(JComponent jComponent, String typeName) {
+ JPanel widgetPane = new JPanel(new BorderLayout(17, 5));
+ widgetPane.add(jComponent, BorderLayout.CENTER);
JPanel labelPane = new JPanel(new BorderLayout());
- labelPane.add(new UILabel(typeName,UILabel.CENTER),BorderLayout.CENTER);
+ labelPane.add(new UILabel(typeName, UILabel.CENTER), BorderLayout.CENTER);
UIButton chartPopUpButton = createPopUpButton();
chartPopUpButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
- JPanel widgetPane = new JPanel(new FlowLayout(FlowLayout.LEFT,0,0));
+ JPanel widgetPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
loadPredefinedWidget();
int rowNum = calculateWidgetWindowRowNum();
JPanel westPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
@@ -239,27 +236,27 @@ public class FormParaWidgetPane extends JPanel{
westPanel.add(new ToolBarButton(o));
}
int x = commonWidgetNum * (widgetButtonWidth + smallGAP);
- westPanel.setPreferredSize(new Dimension(x,(int)(rowNum * westPanel.getPreferredSize().getHeight())));
+ westPanel.setPreferredSize(new Dimension(x, (int) (rowNum * westPanel.getPreferredSize().getHeight())));
JPanel eastPane = new JPanel(new FlowLayout(FlowLayout.LEFT));
for (WidgetOption no : predifinedwidgeList) {
eastPane.add(new ToolBarButton(no));
}
int maxWidth = preWidgetShowMaxNum * (widgetButtonWidth + smallGAP);
- int width = predifinedwidgeList.size() >= preWidgetShowMaxNum ? maxWidth:(int)eastPane.getPreferredSize().getWidth();
- eastPane.setPreferredSize(new Dimension(width,(int)(rowNum*eastPane.getPreferredSize().getHeight())));
+ int width = predifinedwidgeList.size() >= preWidgetShowMaxNum ? maxWidth : (int) eastPane.getPreferredSize().getWidth();
+ eastPane.setPreferredSize(new Dimension(width, (int) (rowNum * eastPane.getPreferredSize().getHeight())));
UIScrollPane eastScrollPane = new UIScrollPane(eastPane);
eastScrollPane.setBorder(null);
int maxHeight = preWidgetShowMaxRow * (widgetButtonHeight + smallGAP);
- int height = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? maxHeight : (int)eastPane.getPreferredSize().getHeight();
- width = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? (int)eastPane.getPreferredSize().getWidth() + smallGAP + jsparatorWidth : (int)eastPane.getPreferredSize().getWidth();
- eastScrollPane.setPreferredSize(new Dimension(width,height));
+ int height = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? maxHeight : (int) eastPane.getPreferredSize().getHeight();
+ width = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? (int) eastPane.getPreferredSize().getWidth() + smallGAP + jsparatorWidth : (int) eastPane.getPreferredSize().getWidth();
+ eastScrollPane.setPreferredSize(new Dimension(width, height));
widgetPane.add(westPanel);
widgetPane.add(createJSeparator(height));
widgetPane.add(eastScrollPane);
- widgetTypeWindow = new PopUpWindow( widgetPane, Inter.getLocText("FR-Designer-Form-ToolBar_Widget"));
+ widgetTypeWindow = new PopUpWindow(widgetPane, Inter.getLocText("FR-Designer-Form-ToolBar_Widget"));
widgetTypeWindow.setSize(widgetTypeWindow.getPreferredSize());
if (jSeparatorChart != null) {
widgetTypeWindow.setLocation((int) jSeparatorChart.getLocationOnScreen().getX() + 1, (int) jSeparatorChart.getLocationOnScreen().getY());
@@ -268,59 +265,60 @@ public class FormParaWidgetPane extends JPanel{
}
});
- labelPane.add(chartPopUpButton,BorderLayout.EAST);
- widgetPane.add(labelPane,BorderLayout.SOUTH);
+ labelPane.add(chartPopUpButton, BorderLayout.EAST);
+ widgetPane.add(labelPane, BorderLayout.SOUTH);
return widgetPane;
}
- private int calculateWidgetWindowRowNum(){
+ private int calculateWidgetWindowRowNum() {
//向上取整
- int rowNum = (int)Math.ceil((double)predifinedwidgeList.size()/(double)preWidgetShowMaxNum);
- rowNum = Math.max(rowNum,2);
- rowNum = Math.min(rowNum,preWidgetShowMaxRow);
+ int rowNum = (int) Math.ceil((double) predifinedwidgeList.size() / (double) preWidgetShowMaxNum);
+ rowNum = Math.max(rowNum, 2);
+ rowNum = Math.min(rowNum, preWidgetShowMaxRow);
return rowNum;
}
- private JSeparator createJSeparator(){
- JSeparator jSeparator = new JSeparator(SwingConstants.VERTICAL );
- jSeparator.setPreferredSize(new Dimension(jsparatorWidth,jsparatorHeight));
- return jSeparator;
+ private JSeparator createJSeparator() {
+ JSeparator jSeparator = new JSeparator(SwingConstants.VERTICAL);
+ jSeparator.setPreferredSize(new Dimension(jsparatorWidth, jsparatorHeight));
+ return jSeparator;
}
- private JSeparator createJSeparator(double height){
- JSeparator jSeparator = new JSeparator(SwingConstants.VERTICAL );
- jSeparator.setPreferredSize(new Dimension(jsparatorWidth,(int)height));
- return jSeparator;
+ private JSeparator createJSeparator(double height) {
+ JSeparator jSeparator = new JSeparator(SwingConstants.VERTICAL);
+ jSeparator.setPreferredSize(new Dimension(jsparatorWidth, (int) height));
+ return jSeparator;
}
- private UIButton createPopUpButton(){
+ private UIButton createPopUpButton() {
UIButton popUpButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowdown.png"));
popUpButton.set4ToolbarButton();
return popUpButton;
}
- private UIButton createPopDownButton(){
+ private UIButton createPopDownButton() {
UIButton popUpButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowup.png"));
popUpButton.set4ToolbarButton();
return popUpButton;
}
- private class paraButton extends ToolBarButton{
- public paraButton(WidgetOption no){
+ private class paraButton extends ToolBarButton {
+ public paraButton(WidgetOption no) {
super(no);
this.setDisabledIcon(BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_parameter2.png"));
- if(designer != null){
+ if (designer != null) {
this.setEnabled(designer.getParaComponent() == null);
}
}
+
public void mouseDragged(MouseEvent e) {
- if (designer.getParaComponent() != null){
- return;
+ if (designer.getParaComponent() != null) {
+ return;
}
designer.addParaComponent();
- JPanel pane =FormWidgetDetailPane.getInstance(designer);
+ JPanel pane = FormWidgetDetailPane.getInstance(designer);
EastRegionContainerPane.getInstance().replaceDownPane(pane);
this.setEnabled(false);
@@ -334,7 +332,7 @@ public class FormParaWidgetPane extends JPanel{
public void setEnabled(boolean b) {
super.setEnabled(b);
- paraLabel.setForeground(b ? Color.BLACK : new Color(198,198,198));
+ paraLabel.setForeground(b ? Color.BLACK : new Color(198, 198, 198));
}
}
@@ -347,8 +345,9 @@ public class FormParaWidgetPane extends JPanel{
}
/**
- * 响应界面改变事件
- * @param evt 事件
+ * 响应界面改变事件
+ *
+ * @param evt 事件
*/
public void fireCreatorModified(DesignerEvent evt) {
button.setEnabled(designer.getParaComponent() == null);
@@ -356,14 +355,13 @@ public class FormParaWidgetPane extends JPanel{
}
-
private class PopUpWindow extends JWindow {
private JPanel northPane;
private String typeName;
private int LineWidth = 5;
private int BarWidth = 10;
- public PopUpWindow(JPanel northPane,String typeName){
+ public PopUpWindow(JPanel northPane, String typeName) {
super();
this.northPane = northPane;
this.typeName = typeName;
@@ -376,17 +374,14 @@ public class FormParaWidgetPane extends JPanel{
public void eventDispatched(AWTEvent event) {
if (event instanceof MouseEvent) {
MouseEvent mv = (MouseEvent) event;
- Point point = mv.getLocationOnScreen();
- double endX = PopUpWindow.this.getX() + northPane.getWidth() + LineWidth;
- double startX = endX - BarWidth;
- double startY = PopUpWindow.this.getY() + northPane.getY();
- double endY = startY + northPane.getHeight();
- boolean dragBar = startX < point.getX() && endX > point.getX() && endY > point.getY();
- if (!dragBar && mv.getClickCount() > 0 && mv.getID() != MouseEvent.MOUSE_RELEASED) {
- if(!ComparatorUtils.equals(mv.getSource(), PopUpWindow.this)) {
- if (!OperatingSystem.isMacOS()) {
- PopUpWindow.this.setVisible(false);
- }
+ if (mv.getClickCount() > 0) {
+ Point point = new Point((int) (mv.getLocationOnScreen().getX()), (int) mv.getLocationOnScreen().getY());
+ // 直接contains在mac下,点击内部也会消失
+ Dimension d = PopUpWindow.this.getSize();
+ Point p = PopUpWindow.this.getLocation();
+ Rectangle rect = new Rectangle(p, d);
+ if (!rect.contains(point)) {
+ PopUpWindow.this.setVisible(false);
}
}
}
@@ -398,9 +393,9 @@ public class FormParaWidgetPane extends JPanel{
JPanel rootPane = new EditorChoosePane();
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(17, 0));
- contentPane.add(northPane,BorderLayout.CENTER);
+ contentPane.add(northPane, BorderLayout.CENTER);
JPanel labelPane = new JPanel(new BorderLayout());
- labelPane.add(new UILabel(typeName,UILabel.CENTER),BorderLayout.CENTER);
+ labelPane.add(new UILabel(typeName, UILabel.CENTER), BorderLayout.CENTER);
JButton popUpButton = createPopDownButton();
popUpButton.addMouseListener(new MouseAdapter() {
@Override
@@ -409,8 +404,8 @@ public class FormParaWidgetPane extends JPanel{
}
});
labelPane.add(popUpButton, BorderLayout.EAST);
- contentPane.add(labelPane,BorderLayout.SOUTH);
- rootPane.add(contentPane,BorderLayout.CENTER);
+ contentPane.add(labelPane, BorderLayout.SOUTH);
+ rootPane.add(contentPane, BorderLayout.CENTER);
return rootPane;
}
@@ -421,31 +416,31 @@ public class FormParaWidgetPane extends JPanel{
private class EditorChoosePane extends JPanel {
public EditorChoosePane() {
super();
- ((FlowLayout)this.getLayout()).setVgap(1);
+ ((FlowLayout) this.getLayout()).setVgap(1);
}
@Override
public void paintComponent(Graphics g) {
Rectangle r = this.getBounds();
g.setColor(UIConstants.NORMAL_BACKGROUND);
- g.fillRoundRect(r.x, r.y, r.width, r.height,0,0);
+ g.fillRoundRect(r.x, r.y, r.width, r.height, 0, 0);
g.setColor(UIConstants.LINE_COLOR);
- g.drawLine(r.x, r.y, r.x, r.y+r.height);
- g.drawLine(r.x, r.y+r.height-1, r.x+r.width-1, r.y+r.height-1);
- g.drawLine(r.x+r.width-1, r.y, r.x+r.width-1, r.y+r.height-1);
+ g.drawLine(r.x, r.y, r.x, r.y + r.height);
+ g.drawLine(r.x, r.y + r.height - 1, r.x + r.width - 1, r.y + r.height - 1);
+ g.drawLine(r.x + r.width - 1, r.y, r.x + r.width - 1, r.y + r.height - 1);
}
}
private WidgetOption[] loadWidgetOptions() {
if (widgetOptions == null) {
- widgetOptions = (WidgetOption[])ArrayUtils.addAll(WidgetOption.getFormWidgetIntance(), ExtraDesignClassManager.getInstance().getFormWidgetOptions());
+ widgetOptions = (WidgetOption[]) ArrayUtils.addAll(WidgetOption.getFormWidgetIntance(), ExtraDesignClassManager.getInstance().getFormWidgetOptions());
}
return widgetOptions;
}
private WidgetOption[] loadLayoutOptions() {
if (layoutOptions == null) {
- layoutOptions = (WidgetOption[])ArrayUtils.addAll(FormWidgetOption.getFormLayoutInstance(), ExtraDesignClassManager.getInstance().getFormWidgetContainerOptions());
+ layoutOptions = (WidgetOption[]) ArrayUtils.addAll(FormWidgetOption.getFormLayoutInstance(), ExtraDesignClassManager.getInstance().getFormWidgetContainerOptions());
}
return layoutOptions;
}