diff --git a/designer/src/com/fr/design/actions/edit/EditFloatElementNameAction.java b/designer/src/com/fr/design/actions/edit/EditFloatElementNameAction.java index 6f235307e1..15a0b07d18 100644 --- a/designer/src/com/fr/design/actions/edit/EditFloatElementNameAction.java +++ b/designer/src/com/fr/design/actions/edit/EditFloatElementNameAction.java @@ -39,7 +39,7 @@ public class EditFloatElementNameAction extends FloatSelectionAction { if (report.getFloatElement(name) == null) { selectedFloatElement.setName(name); } - reportPane.setSelection(new FloatSelection(name)); + ((FloatSelection) reportPane.getSelection()).setFloatName(name); } }); nameDialog.setVisible(true); diff --git a/designer/src/com/fr/design/actions/package.html b/designer/src/com/fr/design/actions/package.html new file mode 100644 index 0000000000..b3f9a9493e --- /dev/null +++ b/designer/src/com/fr/design/actions/package.html @@ -0,0 +1,5 @@ + + +定义了响应各种事件的 Action + + \ No newline at end of file diff --git a/designer/src/com/fr/design/cell/editor/package.html b/designer/src/com/fr/design/cell/editor/package.html index 181bdb68cf..f44232f536 100644 --- a/designer/src/com/fr/design/cell/editor/package.html +++ b/designer/src/com/fr/design/cell/editor/package.html @@ -1,13 +1,9 @@ - - +文本单元格编辑器({@link com.fr.cell.editor.GeneralCellEditor GeneralCellEditor})类. \ No newline at end of file diff --git a/designer/src/com/fr/design/condition/package.html b/designer/src/com/fr/design/condition/package.html new file mode 100644 index 0000000000..7ad30f8025 --- /dev/null +++ b/designer/src/com/fr/design/condition/package.html @@ -0,0 +1,5 @@ + + +条件属性悬浮编辑框中的相关面板 + + \ No newline at end of file diff --git a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java index bb52b766c3..62538e7d05 100644 --- a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java +++ b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java @@ -37,6 +37,8 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.regex.Pattern; /** @@ -57,6 +59,7 @@ public class SelectedDataColumnPane extends BasicPane { private UIButton paramButton; private ElementCasePane casePane; + private CellElement cellElement; // 保存当前选中的 CE public SelectedDataColumnPane() { this(true, false, null); @@ -159,6 +162,7 @@ public class SelectedDataColumnPane extends BasicPane { if (cellElement == null) { return; } + this.cellElement = cellElement; if (itemListener != null) { removeListener(itemListener); } @@ -259,10 +263,20 @@ public class SelectedDataColumnPane extends BasicPane { protected void initTableNameComboBox() { tableNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()); + final ExecutorService executorService = Executors.newSingleThreadExecutor(); tableNameComboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { - columnNameComboBox.setLoaded(false); + if (e.getStateChange() == ItemEvent.SELECTED) { + executorService.execute(new Runnable() { + @Override + public void run() { + synchronized (columnNameComboBox) { + columnNameComboBox.loadInstant(); + } + } + }); + } } }); tableNameComboBox.setPreferredSize(new Dimension(100, 20)); @@ -303,7 +317,7 @@ public class SelectedDataColumnPane extends BasicPane { public void doOk() { List parameterList = editorPane.update(); ps = parameterList.toArray(new Parameter[parameterList.size()]); - update(cellElement); + update(SelectedDataColumnPane.this.cellElement); casePane.fireTargetModified(); } }); diff --git a/designer/src/com/fr/design/dscolumn/package.html b/designer/src/com/fr/design/dscolumn/package.html new file mode 100644 index 0000000000..7c3869f2a7 --- /dev/null +++ b/designer/src/com/fr/design/dscolumn/package.html @@ -0,0 +1,5 @@ + + +数据列相关面板 + + \ No newline at end of file diff --git a/designer/src/com/fr/design/expand/package.html b/designer/src/com/fr/design/expand/package.html new file mode 100644 index 0000000000..038eb5319c --- /dev/null +++ b/designer/src/com/fr/design/expand/package.html @@ -0,0 +1,5 @@ + + +"单元格属性"->"扩展"的界面 + + \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/ElementCasePane.java b/designer/src/com/fr/design/mainframe/ElementCasePane.java index 46c363c380..547fdcf480 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePane.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePane.java @@ -522,15 +522,15 @@ public abstract class ElementCasePane extends Tar * 因为这边判断selection是一个selection,所以不会触发fireSelectionChanged */ public void setSelection(Selection selection) { - try { - //旧选中内容编辑器释放模板对象 - this.getCurrentEditor().release(); - } catch (UnsupportedOperationException e) { - FRLogger.getLogger().info("Nothing to release"); - } if (!ComparatorUtils.equals(this.selection, selection) || !ComparatorUtils.equals(EastRegionContainerPane.getInstance().getCellAttrPane(), CellElementPropertyPane.getInstance())) { + try { + //旧选中内容编辑器释放模板对象 + this.getCurrentEditor().release(); + } catch (UnsupportedOperationException e) { + FRLogger.getLogger().info("Nothing to release"); + } this.selection = selection; fireSelectionChanged(); } diff --git a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java index 8d25463ab8..cc57b7a852 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java @@ -75,9 +75,7 @@ public class ElementCasePaneDelegate extends ElementCasePane { EastRegionContainerPane.getInstance().replaceConfiguredRolesPane(RolesAlreadyEditedPane.getInstance()); return; } - if (DesignerContext.getDesignerFrame().getSelectedJTemplate() != null) { - CellWidgetPropertyPane.getInstance().populate(ElementCasePaneDelegate.this); - } + CellWidgetPropertyPane.getInstance().populate(ElementCasePaneDelegate.this); CellElementPropertyPane.getInstance().populate(ElementCasePaneDelegate.this); QuickEditorRegion.getInstance().populate(getCurrentEditor()); JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); diff --git a/designer/src/com/fr/design/report/package.html b/designer/src/com/fr/design/report/package.html new file mode 100644 index 0000000000..c956ed1f36 --- /dev/null +++ b/designer/src/com/fr/design/report/package.html @@ -0,0 +1,5 @@ + + +包含制作模版过程中可能用到的各种面板(如页面设置、富文本编辑、Excel导出、移动端自适应等) + + \ No newline at end of file diff --git a/designer/src/com/fr/design/webattr/EditToolBar.java b/designer/src/com/fr/design/webattr/EditToolBar.java index 938fd4509b..a8ebd932fc 100644 --- a/designer/src/com/fr/design/webattr/EditToolBar.java +++ b/designer/src/com/fr/design/webattr/EditToolBar.java @@ -34,13 +34,12 @@ import com.fr.report.web.button.Export; import com.fr.report.web.button.PDFPrint; import com.fr.report.web.button.Print; import com.fr.report.web.button.write.AppendColumnRow; +import com.fr.report.web.button.write.ExcelImport; import com.fr.report.web.button.write.Submit; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.*; @@ -52,488 +51,512 @@ import java.util.Set; public class EditToolBar extends BasicPane { - private JWorkBook jwb; - private JList list; - private DefaultListModel listModel; - private JPanel right; - private CardLayout card; - private ButtonPane bp; - private ToolBarButton lastButton; - private Background background = null; - private UICheckBox defaultCheckBox; - - private ListSelectionListener listSelectionListener = new ListSelectionListener() { - public void valueChanged(ListSelectionEvent evt) { - if (lastButton != null) { - lastButton.setWidget(bp.update()); - } - if (list.getSelectedValue() instanceof ToolBarButton) { - lastButton = (ToolBarButton) list.getSelectedValue(); - if (lastButton.getWidget() instanceof Button) { - card.show(right, "button"); - bp.populate(lastButton.getWidget()); - } else { - bp.populate(lastButton.getWidget()); - card.show(right, "none"); - } - } - } - }; - - - private ActionListener actioner = new ActionListener() { - /** - * - */ - public void actionPerformed(ActionEvent arg0) { - final BackgroundPane backgroundPane = new BackgroundPane(); - BasicDialog dialog = backgroundPane.showWindow(DesignerContext.getDesignerFrame()); - backgroundPane.populate(EditToolBar.this.background); - dialog.addDialogActionListener(new DialogActionAdapter() { - public void doOk() { - EditToolBar.this.background = backgroundPane.update(); - if (EditToolBar.this.background != null) { - EditToolBar.this.defaultCheckBox.setSelected(false); - } - } - }); - dialog.setVisible(true); - } - }; - - public EditToolBar() { - initComponent(); - } - - /** - * 初始化 - */ - public void initComponent() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - JPanel left = FRGUIPaneFactory.createBorderLayout_S_Pane(); - listModel = new DefaultListModel(); - list = new JList(listModel); - list.setCellRenderer(render); - left.add(new JScrollPane(list), BorderLayout.CENTER); - if (listModel.getSize() > 0) { - list.setSelectedIndex(0); - } - - ToolBarDef toolbarDef = new ToolBarDef(); - toolbarDef.addShortCut(new MoveUpItemAction()); - toolbarDef.addShortCut(new MoveDownItemAction()); - toolbarDef.addShortCut(new RemoveAction()); - UIToolbar toolBar = ToolBarDef.createJToolBar(); - toolbarDef.updateToolBar(toolBar); - left.add(toolBar, BorderLayout.NORTH); - - right = FRGUIPaneFactory.createCardLayout_S_Pane(); - card = new CardLayout(); - right.setLayout(card); - bp = new ButtonPane(); - right.add("none", FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane()); - right.add("button", bp); - - JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, left, right); - // splitPane.setDividerLocation(left.getMinimumSize().width); - splitPane.setDividerLocation(120); - this.add(splitPane); - list.addListSelectionListener(listSelectionListener); - JPanel backgroundPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - UIButton bgButton = new UIButton(Inter.getLocText(new String[]{"Background", "Set"})); - defaultCheckBox = new UICheckBox(Inter.getLocText(new String[]{"Default", "Background"})); - bgButton.addActionListener(actioner); - backgroundPane.add(defaultCheckBox); - backgroundPane.add(bgButton); - backgroundPane.setBorder(BorderFactory.createTitledBorder(Inter.getLocText(new String[]{"Background", "Set"}))); - this.add(backgroundPane, BorderLayout.SOUTH); - } - - ListCellRenderer render = new DefaultListCellRenderer() { - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - - if (value instanceof ToolBarButton) { - ToolBarButton button = (ToolBarButton) value; - this.setText(button.getNameOption().optionName()); - this.setIcon(button.getNameOption().optionIcon()); - } - return this; - } - }; - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Designer_Edit"); - } - - public void populate(FToolBar ftoolbar) { - this.populate(ftoolbar, null); - } - - public void populate(FToolBar ftoolbar, ToolBarButton button) { - if (ftoolbar == null) { - return; - } - for (int i = 0; i < ftoolbar.getButtonlist().size(); i++) { - listModel.addElement(ftoolbar.getButtonlist().get(i)); - } - this.list.validate(); - this.list.repaint(); - if (ftoolbar.getButtonlist().size() > 0) { - this.list.setSelectedIndex(0); - } - if (button != null) { - this.list.setSelectedValue(button, true); - } - this.background = ftoolbar.getBackground(); - - this.defaultCheckBox.setSelected(ftoolbar.isDefault() ? true : false); - } - - public FToolBar update() { - if (this.list.getSelectedIndex() > -1) { - for (int i = 0; i < listModel.getSize(); i++) { - this.list.setSelectedIndex(i); - ToolBarButton toolBarButton = (ToolBarButton) this.list.getSelectedValue(); - Widget widget = this.bp.update(); - toolBarButton.setWidget(widget); - if (widget instanceof Button) { - String iconname = ((Button) widget).getIconName(); - if (StringUtils.isNotBlank(iconname)) { - Image iimage = WidgetManager.getProviderInstance().getIconManager().getIconImage(iconname); - toolBarButton.setIcon(new ImageIcon(iimage)); - } - } - } - } - List list = new ArrayList(); - for (int i = 0; i < listModel.size(); i++) { - list.add((ToolBarButton) listModel.get(i)); - } - FToolBar ftoolBar = new FToolBar(); - ftoolBar.setButtonlist(list); - - ftoolBar.setDefault(this.defaultCheckBox.isSelected()); - if (!ftoolBar.isDefault()) { - ftoolBar.setBackground(this.background); - } - return ftoolBar; - } - - private class MoveUpItemAction extends UpdateAction { - public MoveUpItemAction() { - this.setName(Inter.getLocText("Utils-Move_Up")); - this.setMnemonic('U'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/up.png")); - } - - /** - * - */ - public void actionPerformed(ActionEvent evt) { - int selectedIndex = list.getSelectedIndex(); - if (selectedIndex == -1) { - return; - } - - // 上移 - if (selectedIndex > 0) { - DefaultListModel listModel = (DefaultListModel) list.getModel(); - - Object selecteObj1 = listModel.get(selectedIndex - 1); - listModel.set(selectedIndex - 1, listModel.get(selectedIndex)); - listModel.set(selectedIndex, selecteObj1); - - list.setSelectedIndex(selectedIndex - 1); - list.ensureIndexIsVisible(selectedIndex - 1); - list.validate(); - } - } - } - - private class MoveDownItemAction extends UpdateAction { - public MoveDownItemAction() { - this.setName(Inter.getLocText("Utils-Move_Down")); - this.setMnemonic('D'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/down.png")); - } - - /** - * - */ - public void actionPerformed(ActionEvent evt) { - int selectedIndex = list.getSelectedIndex(); - if (selectedIndex == -1) { - return; - } - - // 下移 - if (selectedIndex == -1) { - return; - } - - if (selectedIndex < list.getModel().getSize() - 1) { - DefaultListModel listModel = (DefaultListModel) list.getModel(); - - Object selecteObj1 = listModel.get(selectedIndex + 1); - listModel.set(selectedIndex + 1, listModel.get(selectedIndex)); - listModel.set(selectedIndex, selecteObj1); - - list.setSelectedIndex(selectedIndex + 1); - list.ensureIndexIsVisible(selectedIndex + 1); - list.validate(); - } - } - } - - public class RemoveAction extends UpdateAction { - public RemoveAction() { - this.setName(Inter.getLocText("FR-Designer_Delete")); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/remove.png")); - } - - /** - * 动作 - * @param e 事件 - */ - public void actionPerformed(ActionEvent e) { - int i = list.getSelectedIndex(); - if (i < 0 || !(listModel.getElementAt(i) instanceof ToolBarButton)) { - return; - } - int val = JOptionPane.showConfirmDialog(EditToolBar.this, Inter.getLocText("FR-Designer_Are_You_Sure_To_Delete_The_Data") + "?", "Message", JOptionPane.YES_NO_OPTION); - if (val != JOptionPane.YES_OPTION) { - return; - } - listModel.removeElementAt(i); - list.validate(); - if (listModel.size() > 0) { - list.setSelectedIndex(0); - } else { - card.show(right, "none"); - } - } - } - - public class ButtonPane extends BasicPane { - private CardLayout card; - private JPanel centerPane; - private UICheckBox icon, text, pdf, excelP, excelO, excelS, image, word, - flashPrint, pdfPrint, appletPrint, serverPrint, isPopup, isVerify, failSubmit, isCurSheet; - private UIBasicSpinner count; - private Widget widget; - private UITextField nameField; - private IconDefinePane iconPane; - private UIButton button; - private JavaScriptActionPane javaScriptPane; - private ExportToolBarProvider[] exportToolBarProviders; - - private ActionListener actionListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (isVerify.isSelected()) { - failSubmit.setVisible(true); - } else { - failSubmit.setVisible(false); - failSubmit.setSelected(false); - } - } - }; - - public ButtonPane() { - this.initComponents(); - } - - /** - * 初始化元素 - */ - public void initComponents() { - Set set = ExtraDesignClassManager.getInstance().getArray(ExportToolBarProvider.XML_TAG); - exportToolBarProviders = set.toArray(new ExportToolBarProvider[set.size()]); - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - JPanel north = FRGUIPaneFactory.createBorderLayout_S_Pane(); - icon = new UICheckBox(Inter.getLocText("FR-Designer_Show_Icon")); - text = new UICheckBox(Inter.getLocText("FR-Designer_Show_Text")); - - north.add(icon, BorderLayout.NORTH); - north.add(text, BorderLayout.CENTER); - - nameField = new UITextField(8); - iconPane = new IconDefinePane(); - javaScriptPane = JavaScriptActionPane.createDefault(); - - double p = TableLayout.PREFERRED; - double rowSize[] = {p, p}; - double columnSize[] = {p, p}; - - Component[][] coms = new Component[][]{{new UILabel(Inter.getLocText(new String[]{"Widget", "Printer-Alias"}) + ":"), nameField}, {new UILabel(Inter.getLocText(new String[]{"Widget", "Icon"}) + ":"), iconPane}}; - - JPanel nameIconPane = TableLayoutHelper.createTableLayoutPane(coms, rowSize, columnSize); - - north.add(nameIconPane, BorderLayout.SOUTH); - - north.setBorder(BorderFactory.createTitledBorder(Inter.getLocText(new String[]{"Form-Button", "Property", "Set"}))); - this.add(north, BorderLayout.NORTH); - JPanel none = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - centerPane = FRGUIPaneFactory.createCardLayout_S_Pane(); - card = new CardLayout(); - centerPane.setLayout(card); - centerPane.add("custom", getCustomPane()); - centerPane.add("export", getExport()); - centerPane.add("print", getPrint()); - centerPane.add("none", none); - centerPane.add("pdfprint", getPdfPrintSetting()); - // centerPane.add("editexcel", editExcel); - centerPane.add(getCpane(), "appendcount"); - centerPane.add(getSubmitPane(), "submit"); + private JWorkBook jwb; + private JList list; + private DefaultListModel listModel; + private JPanel right; + private CardLayout card; + private ButtonPane bp; + private ToolBarButton lastButton; + private Background background = null; + private UICheckBox defaultCheckBox; + + private ListSelectionListener listSelectionListener = new ListSelectionListener() { + public void valueChanged(ListSelectionEvent evt) { + if (lastButton != null) { + lastButton.setWidget(bp.update()); + } + if (list.getSelectedValue() instanceof ToolBarButton) { + lastButton = (ToolBarButton) list.getSelectedValue(); + if (lastButton.getWidget() instanceof Button) { + card.show(right, "button"); + bp.populate(lastButton.getWidget()); + } else { + bp.populate(lastButton.getWidget()); + card.show(right, "none"); + } + } + } + }; + + + private ActionListener actioner = new ActionListener() { + /** + * + */ + public void actionPerformed(ActionEvent arg0) { + final BackgroundPane backgroundPane = new BackgroundPane(); + BasicDialog dialog = backgroundPane.showWindow(DesignerContext.getDesignerFrame()); + backgroundPane.populate(EditToolBar.this.background); + dialog.addDialogActionListener(new DialogActionAdapter() { + public void doOk() { + EditToolBar.this.background = backgroundPane.update(); + if (EditToolBar.this.background != null) { + EditToolBar.this.defaultCheckBox.setSelected(false); + } + } + }); + dialog.setVisible(true); + } + }; + + public EditToolBar() { + initComponent(); + } + + /** + * 初始化 + */ + public void initComponent() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel left = FRGUIPaneFactory.createBorderLayout_S_Pane(); + listModel = new DefaultListModel(); + list = new JList(listModel); + list.setCellRenderer(render); + left.add(new JScrollPane(list), BorderLayout.CENTER); + if (listModel.getSize() > 0) { + list.setSelectedIndex(0); + } + + ToolBarDef toolbarDef = new ToolBarDef(); + toolbarDef.addShortCut(new MoveUpItemAction()); + toolbarDef.addShortCut(new MoveDownItemAction()); + toolbarDef.addShortCut(new RemoveAction()); + UIToolbar toolBar = ToolBarDef.createJToolBar(); + toolbarDef.updateToolBar(toolBar); + left.add(toolBar, BorderLayout.NORTH); + + right = FRGUIPaneFactory.createCardLayout_S_Pane(); + card = new CardLayout(); + right.setLayout(card); + bp = new ButtonPane(); + right.add("none", FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane()); + right.add("button", bp); + + JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, left, right); + // splitPane.setDividerLocation(left.getMinimumSize().width); + splitPane.setDividerLocation(120); + this.add(splitPane); + list.addListSelectionListener(listSelectionListener); + JPanel backgroundPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + UIButton bgButton = new UIButton(Inter.getLocText(new String[]{"Background", "Set"})); + defaultCheckBox = new UICheckBox(Inter.getLocText(new String[]{"Default", "Background"})); + bgButton.addActionListener(actioner); + backgroundPane.add(defaultCheckBox); + backgroundPane.add(bgButton); + backgroundPane.setBorder(BorderFactory.createTitledBorder(Inter.getLocText(new String[]{"Background", "Set"}))); + this.add(backgroundPane, BorderLayout.SOUTH); + } + + ListCellRenderer render = new DefaultListCellRenderer() { + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + + if (value instanceof ToolBarButton) { + ToolBarButton button = (ToolBarButton) value; + this.setText(button.getNameOption().optionName()); + this.setIcon(button.getNameOption().optionIcon()); + } + return this; + } + }; + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer_Edit"); + } + + public void populate(FToolBar ftoolbar) { + this.populate(ftoolbar, null); + } + + public void populate(FToolBar ftoolbar, ToolBarButton button) { + if (ftoolbar == null) { + return; + } + for (int i = 0; i < ftoolbar.getButtonlist().size(); i++) { + listModel.addElement(ftoolbar.getButtonlist().get(i)); + } + this.list.validate(); + this.list.repaint(); + if (ftoolbar.getButtonlist().size() > 0) { + this.list.setSelectedIndex(0); + } + if (button != null) { + this.list.setSelectedValue(button, true); + } + this.background = ftoolbar.getBackground(); + + this.defaultCheckBox.setSelected(ftoolbar.isDefault() ? true : false); + } + + public FToolBar update() { + if (this.list.getSelectedIndex() > -1) { + for (int i = 0; i < listModel.getSize(); i++) { + this.list.setSelectedIndex(i); + ToolBarButton toolBarButton = (ToolBarButton) this.list.getSelectedValue(); + Widget widget = this.bp.update(); + toolBarButton.setWidget(widget); + if (widget instanceof Button) { + String iconname = ((Button) widget).getIconName(); + if (StringUtils.isNotBlank(iconname)) { + Image iimage = WidgetManager.getProviderInstance().getIconManager().getIconImage(iconname); + toolBarButton.setIcon(new ImageIcon(iimage)); + } + } + } + } + List list = new ArrayList(); + for (int i = 0; i < listModel.size(); i++) { + list.add((ToolBarButton) listModel.get(i)); + } + FToolBar ftoolBar = new FToolBar(); + ftoolBar.setButtonlist(list); + + ftoolBar.setDefault(this.defaultCheckBox.isSelected()); + if (!ftoolBar.isDefault()) { + ftoolBar.setBackground(this.background); + } + return ftoolBar; + } + + private class MoveUpItemAction extends UpdateAction { + public MoveUpItemAction() { + this.setName(Inter.getLocText("Utils-Move_Up")); + this.setMnemonic('U'); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/up.png")); + } + + /** + * + */ + public void actionPerformed(ActionEvent evt) { + int selectedIndex = list.getSelectedIndex(); + if (selectedIndex == -1) { + return; + } + + // 上移 + if (selectedIndex > 0) { + DefaultListModel listModel = (DefaultListModel) list.getModel(); + + Object selecteObj1 = listModel.get(selectedIndex - 1); + listModel.set(selectedIndex - 1, listModel.get(selectedIndex)); + listModel.set(selectedIndex, selecteObj1); + + list.setSelectedIndex(selectedIndex - 1); + list.ensureIndexIsVisible(selectedIndex - 1); + list.validate(); + } + } + } + + private class MoveDownItemAction extends UpdateAction { + public MoveDownItemAction() { + this.setName(Inter.getLocText("Utils-Move_Down")); + this.setMnemonic('D'); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/down.png")); + } + + /** + * + */ + public void actionPerformed(ActionEvent evt) { + int selectedIndex = list.getSelectedIndex(); + if (selectedIndex == -1) { + return; + } + + // 下移 + if (selectedIndex == -1) { + return; + } + + if (selectedIndex < list.getModel().getSize() - 1) { + DefaultListModel listModel = (DefaultListModel) list.getModel(); + + Object selecteObj1 = listModel.get(selectedIndex + 1); + listModel.set(selectedIndex + 1, listModel.get(selectedIndex)); + listModel.set(selectedIndex, selecteObj1); + + list.setSelectedIndex(selectedIndex + 1); + list.ensureIndexIsVisible(selectedIndex + 1); + list.validate(); + } + } + } + + public class RemoveAction extends UpdateAction { + public RemoveAction() { + this.setName(Inter.getLocText("FR-Designer_Delete")); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/remove.png")); + } + + /** + * 动作 + * + * @param e 事件 + */ + public void actionPerformed(ActionEvent e) { + int i = list.getSelectedIndex(); + if (i < 0 || !(listModel.getElementAt(i) instanceof ToolBarButton)) { + return; + } + int val = JOptionPane.showConfirmDialog(EditToolBar.this, Inter.getLocText("FR-Designer_Are_You_Sure_To_Delete_The_Data") + "?", "Message", JOptionPane.YES_NO_OPTION); + if (val != JOptionPane.YES_OPTION) { + return; + } + listModel.removeElementAt(i); + list.validate(); + if (listModel.size() > 0) { + list.setSelectedIndex(0); + } else { + card.show(right, "none"); + } + } + } + + public class ButtonPane extends BasicPane { + private CardLayout card; + private JPanel centerPane; + private UICheckBox icon, text, pdf, excelP, excelO, excelS, image, word, + flashPrint, pdfPrint, appletPrint, serverPrint, isPopup, isVerify, failSubmit, + isCurSheet, excelImClean, excelImCover, excelImAppend, excelImCust; + private UIBasicSpinner count; + private Widget widget; + private UITextField nameField; + private IconDefinePane iconPane; + private UIButton button; + private JavaScriptActionPane javaScriptPane; + private ExportToolBarProvider[] exportToolBarProviders; + + private ActionListener actionListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (isVerify.isSelected()) { + failSubmit.setVisible(true); + } else { + failSubmit.setVisible(false); + failSubmit.setSelected(false); + } + } + }; + + public ButtonPane() { + this.initComponents(); + } + + /** + * 初始化元素 + */ + public void initComponents() { + Set set = ExtraDesignClassManager.getInstance().getArray(ExportToolBarProvider.XML_TAG); + exportToolBarProviders = set.toArray(new ExportToolBarProvider[set.size()]); + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel north = FRGUIPaneFactory.createBorderLayout_S_Pane(); + icon = new UICheckBox(Inter.getLocText("FR-Designer_Show_Icon")); + text = new UICheckBox(Inter.getLocText("FR-Designer_Show_Text")); + + north.add(icon, BorderLayout.NORTH); + north.add(text, BorderLayout.CENTER); + + nameField = new UITextField(8); + iconPane = new IconDefinePane(); + javaScriptPane = JavaScriptActionPane.createDefault(); + + double p = TableLayout.PREFERRED; + double rowSize[] = {p, p}; + double columnSize[] = {p, p}; + + Component[][] coms = new Component[][]{{new UILabel(Inter.getLocText(new String[]{"Widget", "Printer-Alias"}) + ":"), nameField}, {new UILabel(Inter.getLocText(new String[]{"Widget", "Icon"}) + ":"), iconPane}}; + + JPanel nameIconPane = TableLayoutHelper.createTableLayoutPane(coms, rowSize, columnSize); + + north.add(nameIconPane, BorderLayout.SOUTH); + + north.setBorder(BorderFactory.createTitledBorder(Inter.getLocText(new String[]{"Form-Button", "Property", "Set"}))); + this.add(north, BorderLayout.NORTH); + JPanel none = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + centerPane = FRGUIPaneFactory.createCardLayout_S_Pane(); + card = new CardLayout(); + centerPane.setLayout(card); + centerPane.add("custom", getCustomPane()); + centerPane.add("export", getExport()); + centerPane.add("import", getImport()); + centerPane.add("print", getPrint()); + centerPane.add("none", none); + centerPane.add("pdfprint", getPdfPrintSetting()); + // centerPane.add("editexcel", editExcel); + 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); - } - - - private JPanel getCustomPane() { - JPanel customPane = FRGUIPaneFactory.createCenterFlowInnerContainer_S_Pane(); - - button = new UIButton(Inter.getLocText("FR-Designer_User_Defined_Event")); - customPane.add(button); - customPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("FR-Designer_Edit") + "JS", null)); - button.addActionListener(l); - return customPane; - } - - private JPanel getExport() { - JPanel export = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane(); - // export.setLayout(new BoxLayout(export, BoxLayout.Y_AXIS)); - pdf = new UICheckBox(Inter.getLocText("FR-Designer_Output_PDF")); - excelP = new UICheckBox(Inter.getLocText("FR-Designer-Output_Excel_Page")); - excelO = new UICheckBox(Inter.getLocText("FR-Designer-Output_Excel_Simple")); - excelS = new UICheckBox(Inter.getLocText("FR-Designer-Output_Excel_Sheet")); - word = new UICheckBox(Inter.getLocText("FR-Designer_Output_Word")); - image = new UICheckBox(Inter.getLocText("FR-Designer_Image")); - export.add(pdf); - export.add(Box.createVerticalStrut(2)); - export.add(excelP); - export.add(Box.createVerticalStrut(2)); - export.add(excelO); - export.add(Box.createVerticalStrut(2)); - export.add(excelS); - export.add(Box.createVerticalStrut(2)); - export.add(word); - export.add(Box.createVerticalStrut(2)); - export.add(image); - for(int i=0; i extraButtonSet = ExtraDesignClassManager.getInstance().getArray(ExtraButtonToolBarProvider.XML_TAG); for (ExtraButtonToolBarProvider provider : extraButtonSet) { @@ -541,137 +564,157 @@ public class EditToolBar extends BasicPane { } } - private void populateAppendColumnRow(){ - card.show(centerPane, "appendcount"); - count.setValue(((AppendColumnRow) widget).getCount()); - } - - private void populateExport(){ - card.show(centerPane, "export"); - Export export = (Export) widget; - this.pdf.setSelected(export.isPdfAvailable()); - this.excelP.setSelected(export.isExcelPAvailable()); - this.excelO.setSelected(export.isExcelOAvailable()); - this.excelS.setSelected(export.isExcelSAvailable()); - this.word.setSelected(export.isWordAvailable()); - this.image.setSelected(export.isImageAvailable()); - if(exportToolBarProviders != null){ - for(int i=0; i 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()); - print.setFlashPrint(this.flashPrint.isSelected()); - print.setPDFPrint(this.pdfPrint.isSelected()); - print.setServerPrint(this.serverPrint.isSelected()); - } - - private void updateExport(){ - Export export = (Export) widget; - export.setPdfAvailable(this.pdf.isSelected()); - export.setExcelPAvailable(this.excelP.isSelected()); - export.setExcelOAvailable(this.excelO.isSelected()); - export.setExcelSAvailable(this.excelS.isSelected()); - export.setWordAvailable(this.word.isSelected()); - export.setImageAvailable(this.image.isSelected()); - if(exportToolBarProviders != null){ - for(int i=0; i + +模版web属性相关界面 + + \ No newline at end of file diff --git a/designer/src/com/fr/design/widget/WidgetEventPane.java b/designer/src/com/fr/design/widget/WidgetEventPane.java index f1342f9dea..f1139210cb 100644 --- a/designer/src/com/fr/design/widget/WidgetEventPane.java +++ b/designer/src/com/fr/design/widget/WidgetEventPane.java @@ -91,7 +91,7 @@ public class WidgetEventPane extends ObjectUIControlPane { @Override protected DBManipulationPane createDBManipulationPane() { - if(epane == null) { + if(epane == null && DesignerContext.getDesignerFrame().getSelectedJTemplate() != null) { return autoCreateDBManipulationInWidgetEventPane(); } diff --git a/designer/src/com/fr/design/widget/package.html b/designer/src/com/fr/design/widget/package.html new file mode 100644 index 0000000000..8142e0c77c --- /dev/null +++ b/designer/src/com/fr/design/widget/package.html @@ -0,0 +1,5 @@ + + +控件设置相关面板 + + \ No newline at end of file diff --git a/designer/src/com/fr/grid/event/package.html b/designer/src/com/fr/grid/event/package.html index d15343f20c..ebef1b8a03 100644 --- a/designer/src/com/fr/grid/event/package.html +++ b/designer/src/com/fr/grid/event/package.html @@ -1,6 +1,5 @@ - - +这个包中定义了监听单元格变化的接口和类. \ No newline at end of file diff --git a/designer/src/com/fr/grid/package.html b/designer/src/com/fr/grid/package.html new file mode 100644 index 0000000000..16f8010a5c --- /dev/null +++ b/designer/src/com/fr/grid/package.html @@ -0,0 +1,5 @@ + + +表格相关 + + \ No newline at end of file diff --git a/designer/src/com/fr/grid/selection/package.html b/designer/src/com/fr/grid/selection/package.html new file mode 100644 index 0000000000..15eaca8aea --- /dev/null +++ b/designer/src/com/fr/grid/selection/package.html @@ -0,0 +1,5 @@ + + +定义了表格的选择模型 + + \ No newline at end of file diff --git a/designer/src/com/fr/poly/package.html b/designer/src/com/fr/poly/package.html new file mode 100644 index 0000000000..ddfd9937f4 --- /dev/null +++ b/designer/src/com/fr/poly/package.html @@ -0,0 +1,5 @@ + + +聚合报表的设计器、控件、事件处理等 + + \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/package.html b/designer/src/com/fr/quickeditor/package.html new file mode 100644 index 0000000000..301e71daf9 --- /dev/null +++ b/designer/src/com/fr/quickeditor/package.html @@ -0,0 +1,5 @@ + + +这个包定义了各种单元格元素(如数据列、公式、富文本等)、图表块以及悬浮元素的编辑器 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/common/inputevent/package.html b/designer_base/src/com/fr/common/inputevent/package.html new file mode 100644 index 0000000000..562cdcdeca --- /dev/null +++ b/designer_base/src/com/fr/common/inputevent/package.html @@ -0,0 +1,5 @@ + + +处理输入事件的工具类 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/bbs/package.html b/designer_base/src/com/fr/design/bbs/package.html new file mode 100644 index 0000000000..9101172d98 --- /dev/null +++ b/designer_base/src/com/fr/design/bbs/package.html @@ -0,0 +1,5 @@ + + +论坛相关的工具类 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/border/package.html b/designer_base/src/com/fr/design/border/package.html new file mode 100644 index 0000000000..bdf291c80a --- /dev/null +++ b/designer_base/src/com/fr/design/border/package.html @@ -0,0 +1,5 @@ + + +边框组件 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/bridge/package.html b/designer_base/src/com/fr/design/bridge/package.html new file mode 100644 index 0000000000..d7546aef5f --- /dev/null +++ b/designer_base/src/com/fr/design/bridge/package.html @@ -0,0 +1,5 @@ + + +沟通 designer 和 designer_form 的接口类 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/constants/package.html b/designer_base/src/com/fr/design/constants/package.html new file mode 100644 index 0000000000..30d428c7ea --- /dev/null +++ b/designer_base/src/com/fr/design/constants/package.html @@ -0,0 +1,5 @@ + + +全局常量 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/package.html b/designer_base/src/com/fr/design/data/package.html new file mode 100644 index 0000000000..353e9e8bca --- /dev/null +++ b/designer_base/src/com/fr/design/data/package.html @@ -0,0 +1,5 @@ + + +数据集相关的面板和组件 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/dialog/package.html b/designer_base/src/com/fr/design/dialog/package.html index 77262d5417..2b2874cd98 100644 --- a/designer_base/src/com/fr/design/dialog/package.html +++ b/designer_base/src/com/fr/design/dialog/package.html @@ -1,8 +1,8 @@ -Defined some dialogs that can be used in your applications of applets, For example: +定义了一些对话框,使用示例: PageSetupDialog({@link com.fr.dialog.PageSetupDialog PageSetupDialog}), StyleDialog({@link com.fr.dialog.core.ColorSelectBox ColorSelectBox}), -CellBorderDialog({@link com.fr.dialog.CellBorderDialog CellBorderDialog}).]!> +CellBorderDialog({@link com.fr.dialog.CellBorderDialog CellBorderDialog})> \ No newline at end of file diff --git a/designer_base/src/com/fr/design/editor/package.html b/designer_base/src/com/fr/design/editor/package.html new file mode 100644 index 0000000000..1613b51712 --- /dev/null +++ b/designer_base/src/com/fr/design/editor/package.html @@ -0,0 +1,5 @@ + + +各种编辑器(文本、日期、数字等)组件 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/event/package.html b/designer_base/src/com/fr/design/event/package.html new file mode 100644 index 0000000000..92e2c3605c --- /dev/null +++ b/designer_base/src/com/fr/design/event/package.html @@ -0,0 +1,5 @@ + + +事件处理的工具类 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/PluginTask.java b/designer_base/src/com/fr/design/extra/PluginTask.java index f91001cc7e..3e24f57bff 100644 --- a/designer_base/src/com/fr/design/extra/PluginTask.java +++ b/designer_base/src/com/fr/design/extra/PluginTask.java @@ -74,14 +74,22 @@ public class PluginTask extends Task { * 2.js字符串中的\n会导致js字符串变成多行,而js字符串不支持多行拼接 * 3.由JSONObject.toString()得到的字符串中html标签的属性会自动加上\造成替换难度加大, * 这边建议去除所有的html标签 - * + * 字符\在java中实际存储的是\\,替换字符串\\n, 需要用\\\\n; + * "\t"、"\n"、"\t" 转义成""; + * "\\"需要转换成"\\\"; + * * @param old 原始字符串 * @return 处理之后的字符串 */ private String trimText(String old) { if (StringUtils.isNotBlank(old)) { String b = filterHtmlTag(old); - return b.replaceAll("\\\\n", StringUtils.EMPTY).replaceAll("\\\\t", StringUtils.EMPTY).replaceAll("\"", "\\\\\"").replaceAll("\'", "\\\\\'").replaceAll("\\\\\\\\", "\\\\\\\\\\\\"); + return b.replaceAll("\\\\n", StringUtils.EMPTY) + .replaceAll("\\\\r", StringUtils.EMPTY) + .replaceAll("\\\\t", StringUtils.EMPTY) + .replaceAll("\"", "\\\\\"") + .replaceAll("\'", "\\\\\'") + .replaceAll("\\\\\\\\", "\\\\\\\\\\\\"); } return StringUtils.EMPTY; } diff --git a/designer_base/src/com/fr/design/extra/package.html b/designer_base/src/com/fr/design/extra/package.html new file mode 100644 index 0000000000..d4eda58e08 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/package.html @@ -0,0 +1,5 @@ + + +用户登录、插件商城等功能 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/file/package.html b/designer_base/src/com/fr/design/file/package.html new file mode 100644 index 0000000000..4b2390a080 --- /dev/null +++ b/designer_base/src/com/fr/design/file/package.html @@ -0,0 +1,5 @@ + + +历史模版、新建模版、保存模版、模版tab、模版树等界面和功能 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/foldablepane/package.html b/designer_base/src/com/fr/design/foldablepane/package.html new file mode 100644 index 0000000000..bf8d8f383b --- /dev/null +++ b/designer_base/src/com/fr/design/foldablepane/package.html @@ -0,0 +1,5 @@ + + +可折叠面板组件 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/formula/package.html b/designer_base/src/com/fr/design/formula/package.html new file mode 100644 index 0000000000..2bd49a3187 --- /dev/null +++ b/designer_base/src/com/fr/design/formula/package.html @@ -0,0 +1,5 @@ + + +公式编辑相关面板 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/fun/package.html b/designer_base/src/com/fr/design/fun/package.html new file mode 100644 index 0000000000..f064c57bf3 --- /dev/null +++ b/designer_base/src/com/fr/design/fun/package.html @@ -0,0 +1,5 @@ + + +提供一些 UI 接口 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java b/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java index 2d69c2fc83..43711b0118 100644 --- a/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java +++ b/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java @@ -59,14 +59,11 @@ public abstract class LazyComboBox extends UIComboBox implements PopupMenuListen } /** - * 通过调用该方法,在点击下拉框按钮之前就加载好数据 + * 通过调用该方法,在点击下拉框按钮之前就加载好数据,不需要出现loading了 */ public void loadInstant() { - if (loaded) { - return; - } - setModel(new DefaultComboBoxModel(load())); - loaded = true; + setLoaded(true); + loadList(); } @Override diff --git a/designer_base/src/com/fr/design/gui/package.html b/designer_base/src/com/fr/design/gui/package.html new file mode 100644 index 0000000000..8a70f1dd23 --- /dev/null +++ b/designer_base/src/com/fr/design/gui/package.html @@ -0,0 +1,5 @@ + + +包含一些 UI 组件 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/icon/package.html b/designer_base/src/com/fr/design/icon/package.html new file mode 100644 index 0000000000..82749915b3 --- /dev/null +++ b/designer_base/src/com/fr/design/icon/package.html @@ -0,0 +1,5 @@ + + +定义一些 icon + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/javascript/package.html b/designer_base/src/com/fr/design/javascript/package.html new file mode 100644 index 0000000000..dbfe28451f --- /dev/null +++ b/designer_base/src/com/fr/design/javascript/package.html @@ -0,0 +1,5 @@ + + +javascript 编辑面板 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/layout/package.html b/designer_base/src/com/fr/design/layout/package.html new file mode 100644 index 0000000000..d16f5f7ee7 --- /dev/null +++ b/designer_base/src/com/fr/design/layout/package.html @@ -0,0 +1,5 @@ + + +这个包定义了一些布局 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java index 92489c598a..1218f65cad 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java @@ -944,8 +944,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } else { this.addAndActivateJTemplate(jt); } - //REPORT-5084:激活后刷新一下右側面板 - jt.refreshEastPropertiesPane(); } /** diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java index 9a2aed712f..6a4f6b92f3 100644 --- a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java +++ b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java @@ -11,6 +11,7 @@ import com.fr.general.FRLogLevel; import com.fr.general.FRLogger; import com.fr.general.GeneralContext; import com.fr.general.Inter; +import com.fr.general.LogRecordTime; import com.fr.log.LogHandler; import com.fr.stable.EnvChangedListener; import com.fr.stable.xml.LogRecordTimeProvider; @@ -159,6 +160,10 @@ public class DesignerLogHandler { logHandlerArea.printStackTrace(message, level, date); } + public void printRemoteLog(LogRecordTime logRecordTime) { + logHandlerArea.printStackTrace(logRecordTime); + } + private class LogHandlerArea extends JPanel { private static final long serialVersionUID = 8215630927304621660L; diff --git a/designer_base/src/com/fr/design/menu/package.html b/designer_base/src/com/fr/design/menu/package.html new file mode 100644 index 0000000000..00934e263a --- /dev/null +++ b/designer_base/src/com/fr/design/menu/package.html @@ -0,0 +1,5 @@ + + +菜单组件 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/module/package.html b/designer_base/src/com/fr/design/module/package.html new file mode 100644 index 0000000000..8eb0720824 --- /dev/null +++ b/designer_base/src/com/fr/design/module/package.html @@ -0,0 +1,5 @@ + + +设计器模块相关 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/object/package.html b/designer_base/src/com/fr/design/object/package.html new file mode 100644 index 0000000000..fd245d3eee --- /dev/null +++ b/designer_base/src/com/fr/design/object/package.html @@ -0,0 +1,5 @@ + + +包含与对象有关的工具类 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/preview/package.html b/designer_base/src/com/fr/design/preview/package.html new file mode 100644 index 0000000000..ed9564d89e --- /dev/null +++ b/designer_base/src/com/fr/design/preview/package.html @@ -0,0 +1,5 @@ + + +模版预览方式 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/roleAuthority/package.html b/designer_base/src/com/fr/design/roleAuthority/package.html new file mode 100644 index 0000000000..79db356fe8 --- /dev/null +++ b/designer_base/src/com/fr/design/roleAuthority/package.html @@ -0,0 +1,5 @@ + + +权限编辑相关代码 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/scrollruler/package.html b/designer_base/src/com/fr/design/scrollruler/package.html new file mode 100644 index 0000000000..867402e2c7 --- /dev/null +++ b/designer_base/src/com/fr/design/scrollruler/package.html @@ -0,0 +1,5 @@ + + +标尺的实现类 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/selection/package.html b/designer_base/src/com/fr/design/selection/package.html new file mode 100644 index 0000000000..10c7be1a7c --- /dev/null +++ b/designer_base/src/com/fr/design/selection/package.html @@ -0,0 +1,5 @@ + + +与选择模型有关的接口和抽象类 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/color/ColorSelectDialog.java b/designer_base/src/com/fr/design/style/color/ColorSelectDialog.java index 3d986fa718..02b742ad3f 100644 --- a/designer_base/src/com/fr/design/style/color/ColorSelectDialog.java +++ b/designer_base/src/com/fr/design/style/color/ColorSelectDialog.java @@ -84,7 +84,7 @@ public class ColorSelectDialog extends MiddleChartDialog{ this.setLayout(new BorderLayout()); this.add(pane,BorderLayout.NORTH); this.setBasicDialogSize(545,500); - + this.setResizable(false); JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); diff --git a/designer_base/src/com/fr/design/style/package.html b/designer_base/src/com/fr/design/style/package.html new file mode 100644 index 0000000000..579503c487 --- /dev/null +++ b/designer_base/src/com/fr/design/style/package.html @@ -0,0 +1,5 @@ + + +与样式(颜色、边框、字体、对齐方式等)有关的面板和功能 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/utils/package.html b/designer_base/src/com/fr/design/utils/package.html new file mode 100644 index 0000000000..d71a5c6cc2 --- /dev/null +++ b/designer_base/src/com/fr/design/utils/package.html @@ -0,0 +1,5 @@ + + +提供一些工具类 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/design/web/package.html b/designer_base/src/com/fr/design/web/package.html new file mode 100644 index 0000000000..da2d797788 --- /dev/null +++ b/designer_base/src/com/fr/design/web/package.html @@ -0,0 +1,5 @@ + + +定义与web端展示有关的类 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 65733b1dfd..66da6253bf 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -25,6 +25,7 @@ import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.fun.DesignerEnvProcessor; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrameFileDealerPane; +import com.fr.design.mainframe.loghandler.DesignerLogHandler; import com.fr.file.CacheManager; import com.fr.file.DatasourceManager; import com.fr.file.DatasourceManagerProvider; @@ -1838,7 +1839,7 @@ public class RemoteEnv extends AbstractEnv { } LogRecordTime[] records = LogUtils.readXMLLogRecords(input); for (LogRecordTime logRecordTime : records) { - //TODO + DesignerLogHandler.getInstance().printRemoteLog(logRecordTime); } } diff --git a/designer_base/src/com/fr/env/package.html b/designer_base/src/com/fr/env/package.html new file mode 100644 index 0000000000..4401234800 --- /dev/null +++ b/designer_base/src/com/fr/env/package.html @@ -0,0 +1,5 @@ + + +报表工作环境相关(本地设计、远程设计) + + \ No newline at end of file diff --git a/designer_base/src/com/fr/file/filter/package.html b/designer_base/src/com/fr/file/filter/package.html new file mode 100644 index 0000000000..7eb6a630f7 --- /dev/null +++ b/designer_base/src/com/fr/file/filter/package.html @@ -0,0 +1,5 @@ + + +文件过滤器 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/file/package.html b/designer_base/src/com/fr/file/package.html new file mode 100644 index 0000000000..c831ea79e3 --- /dev/null +++ b/designer_base/src/com/fr/file/package.html @@ -0,0 +1,5 @@ + + +与文件有关的工具类 + + \ No newline at end of file diff --git a/designer_base/src/com/fr/start/package.html b/designer_base/src/com/fr/start/package.html new file mode 100644 index 0000000000..eae1644a58 --- /dev/null +++ b/designer_base/src/com/fr/start/package.html @@ -0,0 +1,5 @@ + + +包含启动设计器的相关类(其中 Designer 是整个设计器程序的入口) + + \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/package.html b/designer_chart/src/com/fr/design/chart/package.html new file mode 100644 index 0000000000..1ed1e80174 --- /dev/null +++ b/designer_chart/src/com/fr/design/chart/package.html @@ -0,0 +1,5 @@ + + +图表相关的代码 + + \ No newline at end of file diff --git a/designer_chart/src/com/fr/plugin/chart/package.html b/designer_chart/src/com/fr/plugin/chart/package.html new file mode 100644 index 0000000000..0be2d1f190 --- /dev/null +++ b/designer_chart/src/com/fr/plugin/chart/package.html @@ -0,0 +1,5 @@ + + +图表(新特性) + + \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index 852cdf1220..8e654b7886 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -171,16 +171,14 @@ public class XWAbsoluteLayout extends XLayoutContainer { tabLayout.updateBoundsWidget(); } } - BoundsWidget boundsWidget = (BoundsWidget) layout.getBoundsWidget(xCreator.toData()); - Rectangle rectangle = dealWidgetBound(xCreator.getBounds()); } private Rectangle calculateBound(Rectangle rec, double pw, double ph) { Rectangle calRec = new Rectangle(0, 0, 0, 0); - calRec.x = (int) (rec.x / pw); - calRec.y = (int) (rec.y / ph); - calRec.width = (int) (rec.width / pw); - calRec.height = (int) (rec.height / ph); + calRec.x = (int) Math.round(rec.x / pw); + calRec.y = (int) Math.round(rec.y / ph); + calRec.width = (int) Math.round(rec.width / pw); + calRec.height = (int) Math.round(rec.height / ph); return calRec; } diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index 8f60672eca..2e6d82fb3d 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -17,7 +17,6 @@ import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; import com.fr.general.IOUtils; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.general.Inter; import java.awt.*; @@ -274,4 +273,11 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ return this; } } + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/package.html b/designer_form/src/com/fr/design/designer/creator/package.html new file mode 100644 index 0000000000..9fee75cdf8 --- /dev/null +++ b/designer_form/src/com/fr/design/designer/creator/package.html @@ -0,0 +1,5 @@ + + +各种表单控件 + + \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/package.html b/designer_form/src/com/fr/design/designer/package.html new file mode 100644 index 0000000000..a8eddbdc58 --- /dev/null +++ b/designer_form/src/com/fr/design/designer/package.html @@ -0,0 +1,5 @@ + + +设计器 + + \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/properties/package.html b/designer_form/src/com/fr/design/designer/properties/package.html new file mode 100644 index 0000000000..e00f151da1 --- /dev/null +++ b/designer_form/src/com/fr/design/designer/properties/package.html @@ -0,0 +1,5 @@ + + +控件属性相关 + + \ No newline at end of file diff --git a/designer_form/src/com/fr/design/form/package.html b/designer_form/src/com/fr/design/form/package.html new file mode 100644 index 0000000000..68ad2d2702 --- /dev/null +++ b/designer_form/src/com/fr/design/form/package.html @@ -0,0 +1,5 @@ + + +表单特有的类和文件 + + \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java index 275691f880..86a7536e2f 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelectionUtils.java @@ -142,6 +142,13 @@ public class FormSelectionUtils { } } } + Component[] components = copiedCreator.getComponents(); + for (Component component : components) { + try { + resetTabSub2RealSize((XCreator) component); + } catch (ClassCastException ignored) { + } + } } /** diff --git a/designer_form/src/com/fr/design/mainframe/MobileWidgetTable.java b/designer_form/src/com/fr/design/mainframe/MobileWidgetTable.java index 3188630689..0f0f3bd45e 100644 --- a/designer_form/src/com/fr/design/mainframe/MobileWidgetTable.java +++ b/designer_form/src/com/fr/design/mainframe/MobileWidgetTable.java @@ -247,31 +247,30 @@ public class MobileWidgetTable extends JTable { * @return String[][] 二维数组,[0][0]widgetName */ private String[][] getData() { - List mobileWidgetList = new ArrayList(); if (designer.isFormParaDesigner()) { return new String[0][0]; } - WSortLayout body = (WSortLayout) designer.getRootComponent().toData(); + //选择的控件 + XCreator selectedCreator = designer.getSelectionModel().getSelection().getSelectedCreator(); + Widget selectedModel = selectedCreator != null ? selectedCreator.toData() : null; - if (body == null) { + if (selectedModel == null) { return new String[0][0]; } - if (body.getWidgetCount() > 0 && body.getWidget(0).acceptType(WAbsoluteBodyLayout.class)) { - WAbsoluteBodyLayout absoluteBodyLayout = (WAbsoluteBodyLayout) ((WAbsoluteLayout.BoundsWidget) body.getWidget(0)).getWidget(); - mobileWidgetList = absoluteBodyLayout.getOrderedMobileWidgetList(); + // 选择的控件有两种类型,一种是WLayout,代表容器,一种是Widget,代表控件 + if (selectedModel.acceptType(WSortLayout.class)) { + List mobileWidgetList = ((WSortLayout) selectedModel).getOrderedMobileWidgetList(); + String[][] widgetName = new String[mobileWidgetList.size() + 1][1]; + widgetName[0][0] = Inter.getLocText("FR-Designer_WidgetOrder"); + for (int i = 0; i < mobileWidgetList.size(); i++) { + widgetName[i + 1][0] = mobileWidgetList.get(i); + } + return widgetName; } else { - mobileWidgetList = body.getOrderedMobileWidgetList(); - } - String[][] widgetName = new String[mobileWidgetList.size() + 1][1]; - widgetName[0][0] = Inter.getLocText("FR-Designer_WidgetOrder"); - for (int i = 0; i < mobileWidgetList.size(); i++) { - widgetName[i + 1][0] = mobileWidgetList.get(i); + return new String[0][0]; } - - return widgetName; - } public boolean isCollapsed() { diff --git a/designer_form/src/com/fr/design/mainframe/package.html b/designer_form/src/com/fr/design/mainframe/package.html new file mode 100644 index 0000000000..85078ef8bb --- /dev/null +++ b/designer_form/src/com/fr/design/mainframe/package.html @@ -0,0 +1,5 @@ + + +设计器整体框架 + + \ No newline at end of file diff --git a/designer_form/src/com/fr/design/parameter/package.html b/designer_form/src/com/fr/design/parameter/package.html new file mode 100644 index 0000000000..3391411335 --- /dev/null +++ b/designer_form/src/com/fr/design/parameter/package.html @@ -0,0 +1,5 @@ + + +参数面板 + + \ No newline at end of file diff --git a/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetAbsoluteBoundPane.java b/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetAbsoluteBoundPane.java index 262e52588a..3b64c4a8e8 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetAbsoluteBoundPane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetAbsoluteBoundPane.java @@ -1,7 +1,11 @@ package com.fr.design.widget.ui.designer.component; import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XWAbsoluteLayout; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.mainframe.WidgetPropertyPane; +import com.fr.design.utils.gui.LayoutUtils; import com.fr.design.widget.WidgetBoundsPaneFactory; import com.fr.form.ui.container.WLayout; import com.fr.general.Inter; @@ -35,6 +39,8 @@ public class WidgetAbsoluteBoundPane extends WidgetBoundPane { @Override public void update() { + FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); + formDesigner.getSelectionModel().getSelection().backupBounds(); super.update(); Rectangle bounds = new Rectangle(creator.getBounds()); bounds.x = (int) x.getValue(); @@ -45,6 +51,9 @@ public class WidgetAbsoluteBoundPane extends WidgetBoundPane { WLayout wabs = parent.toData(); wabs.setBounds(creator.toData(), bounds); creator.setBounds(bounds); + LayoutUtils.layoutContainer(creator); + XWAbsoluteLayout layout = (XWAbsoluteLayout) parent; + layout.updateBoundsWidget(creator); } @Override diff --git a/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java b/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java index db2f634e93..9ca135f78a 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java @@ -81,6 +81,7 @@ public class WidgetBoundPane extends BasicPane { public void fix() { Rectangle bounds = new Rectangle(creator.getBounds()); + creator.setBackupBound(creator.getBounds()); int w = (int) width.getValue(); int h = (int) height.getValue(); Rectangle rec = ComponentUtils.getRelativeBounds(parent);