diff --git a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java index 682f9a930..f76d5fa85 100644 --- a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java +++ b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java @@ -279,8 +279,8 @@ public class SelectedDataColumnPane extends BasicPane { }); } - private void initWithParameterButton(ElementCasePane casePane, TemplateCellElement cellElement) { - SelectedDataColumnPane that = this; + private void initWithParameterButton(final ElementCasePane casePane, final TemplateCellElement cellElement) { + final SelectedDataColumnPane that = this; editorPane = new UITableEditorPane(new ParameterTableModel()); paramButton = new UIButton(Inter.getLocText("TableData_Dynamic_Parameter_Setting")); paramButton.addActionListener(new ActionListener() { diff --git a/designer/src/com/fr/design/module/DesignerModule.java b/designer/src/com/fr/design/module/DesignerModule.java index bf96db2af..6cdbea4e5 100644 --- a/designer/src/com/fr/design/module/DesignerModule.java +++ b/designer/src/com/fr/design/module/DesignerModule.java @@ -169,7 +169,7 @@ public class DesignerModule extends DesignModule { } @Override - /** + /* * 针对不同的对象,在读取Object对象的xml的时候需要使用不同的对象生成器 * @return 返回对象生成器 */ @@ -242,7 +242,7 @@ public class DesignerModule extends DesignModule { } @Override - /** + /* * 返回设计器能打开的模板类型的一个数组列表 * @return 可以打开的模板类型的数组 */ diff --git a/designer/src/com/fr/quickeditor/CellQuickEditor.java b/designer/src/com/fr/quickeditor/CellQuickEditor.java index 29cb2a307..2e1f4531d 100644 --- a/designer/src/com/fr/quickeditor/CellQuickEditor.java +++ b/designer/src/com/fr/quickeditor/CellQuickEditor.java @@ -4,9 +4,11 @@ import com.fr.design.actions.UpdateAction; import com.fr.design.actions.core.ActionFactory; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.iscrollbar.UIScrollBar; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.CellElementPropertyPane; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.menu.MenuKeySet; @@ -21,8 +23,7 @@ import javax.swing.*; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +import java.awt.event.*; import java.util.ArrayList; /** @@ -32,26 +33,78 @@ import java.util.ArrayList; */ public abstract class CellQuickEditor extends QuickEditor { + /*滚动条相关配置*/ + private static final int MAXVALUE = 100; + private static final int TITLE_HEIGHT = 50; + private static final int MOUSE_WHEEL_SPEED = 5; + private static final int CONTENT_PANE_WIDTH_GAP = 4; + private static final int SCROLLBAR_WIDTH = 8; + private int maxHeight = 280; + /*面板配置*/ protected UITextField columnRowTextField; protected TemplateCellElement cellElement; - protected UIComboBox comboBox; + private UIComboBox comboBox; private UpdateAction[] cellInsertActions; - private MenuKeySet[] cellInsertActionNames; private int selectedIndex; + private JPanel leftContentPane; + private UIScrollBar scrollBar; + /*占位label*/ + protected static UILabel emptyLabel = new UILabel(); + + static { + emptyLabel.setPreferredSize(new Dimension(60, 20)); + } public CellQuickEditor() { + + scrollBar = new UIScrollBar(UIScrollBar.VERTICAL) { + @Override + public int getVisibleAmount() { + int preferredHeight = leftContentPane.getPreferredSize().height; + int e = MAXVALUE * (maxHeight) / preferredHeight; + setVisibleAmount(e); + return e; + } + + @Override + public int getMaximum() { + return MAXVALUE; + } + + }; + + scrollBar.addAdjustmentListener(new AdjustmentListener() { + + @Override + public void adjustmentValueChanged(AdjustmentEvent e) { + doLayout(); + } + }); + this.addMouseWheelListener(new MouseWheelListener() { + + @Override + public void mouseWheelMoved(MouseWheelEvent e) { + int value = scrollBar.getValue(); + value += MOUSE_WHEEL_SPEED * e.getWheelRotation(); + scrollBar.setValue(value); + doLayout(); + } + }); + double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = {p, f}; double[] rowSize = {p, p}; + JComponent centerBody = createCenterBody(); + centerBody.setBorder(BorderFactory.createMatteBorder(0, 10, 0, 0, this.getBackground())); Component[][] components = new Component[][]{ new Component[]{initTopContent(), null}, - new Component[]{createCenterBody(), null} + new Component[]{centerBody, null} }; - JPanel panel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - this.setLayout(new BorderLayout()); - this.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); - this.add(panel, BorderLayout.CENTER); + leftContentPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + this.setLayout(new BarLayout()); + this.add(scrollBar); + this.add(leftContentPane); } @@ -70,7 +123,7 @@ public abstract class CellQuickEditor extends QuickEditor { new Component[]{insertContentLabel, cellElementEditButton}, }; JPanel topContent = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - topContent.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); + topContent.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); return topContent; } @@ -100,7 +153,7 @@ public abstract class CellQuickEditor extends QuickEditor { for (UpdateAction action : cellInsertActions) { arrayList.add(action.getMenuKeySet().getMenuKeySetName()); } - comboBox.setModel(new DefaultComboBoxModel(arrayList.toArray(new String[arrayList.size()]))); + comboBox.setModel(new DefaultComboBoxModel<>(arrayList.toArray(new String[arrayList.size()]))); } @Override @@ -122,7 +175,7 @@ public abstract class CellQuickEditor extends QuickEditor { } private String[] getDefaultComboBoxItems() { - cellInsertActionNames = ActionFactory.createCellInsertActionName(); + MenuKeySet[] cellInsertActionNames = ActionFactory.createCellInsertActionName(); ArrayList names = new ArrayList<>(); for (MenuKeySet cellInsertActionName : cellInsertActionNames) { names.add(cellInsertActionName.getMenuKeySetName()); @@ -197,4 +250,55 @@ public abstract class CellQuickEditor extends QuickEditor { * 刷新详细信息 */ protected abstract void refreshDetails(); + + /** + * 属性面板的滚动条和内容区域的布局管理类 + * yaoh.wu 由于这边不能继承{@link com.fr.design.mainframe.AbstractAttrPane.BarLayout},所以冗余了一份滚动条代码进来 + * + * @see com.fr.design.mainframe.AbstractAttrPane.BarLayout + */ + protected class BarLayout implements LayoutManager { + + @Override + public void addLayoutComponent(String name, Component comp) { + + } + + @Override + public void removeLayoutComponent(Component comp) { + + } + + @Override + public Dimension preferredLayoutSize(Container parent) { + return leftContentPane.getPreferredSize(); + } + + @Override + public Dimension minimumLayoutSize(Container parent) { + return leftContentPane.getMinimumSize(); + } + + @Override + public void layoutContainer(Container parent) { + maxHeight = CellElementPropertyPane.getInstance().getHeight() - TITLE_HEIGHT; + int beginY; + if ((MAXVALUE - scrollBar.getVisibleAmount()) == 0) { + beginY = 0; + } else { + int preferredHeight = leftContentPane.getPreferredSize().height; + int value = scrollBar.getValue(); + beginY = value * (preferredHeight - maxHeight) / (MAXVALUE - scrollBar.getVisibleAmount()); + } + int width = parent.getWidth(); + int height = parent.getHeight(); + if (leftContentPane.getPreferredSize().height > maxHeight) { + leftContentPane.setBounds(0, -beginY, width - scrollBar.getWidth() - CONTENT_PANE_WIDTH_GAP, height + beginY); + scrollBar.setBounds(width - scrollBar.getWidth() - 1, 0, scrollBar.getWidth(), height); + } else { + leftContentPane.setBounds(0, 0, width - SCROLLBAR_WIDTH - CONTENT_PANE_WIDTH_GAP, height); + } + leftContentPane.validate(); + } + } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java index 261a1111a..c9a1ad1e1 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java @@ -5,9 +5,10 @@ import com.fr.design.actions.insert.cell.BiasCellAction; import com.fr.design.cell.editor.BiasTextPainterCellEditor.BiasTextPainterPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; import com.fr.general.ComparatorUtils; -import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; import com.fr.report.cell.painter.BiasTextPainter; @@ -25,8 +26,7 @@ public class CellBiasTextPainterEditor extends CellQuickEditor { @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); - UIButton editButton = new UIButton(Inter.getLocText("Edit"), IOUtils.readIcon("/com/fr/design/images/m_insert/bias.png")); + UIButton editButton = new UIButton(Inter.getLocText("Edit")); editButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -34,7 +34,10 @@ public class CellBiasTextPainterEditor extends CellQuickEditor { } }); editButton.setOpaque(false); - content.add(editButton, BorderLayout.CENTER); + content.add(TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{emptyLabel, editButton}}, + new double[]{TableLayout.PREFERRED}, + new double[]{TableLayout.PREFERRED, TableLayout.FILL}), BorderLayout.CENTER); return content; } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 127cfd632..254b9102d 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -135,7 +135,6 @@ public class CellDSColumnEditor extends CellQuickEditor { String[] iconArray = new String[paneList.size()]; card = new CardLayout(); cardContainer = new JPanel(card); - cardContainer.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); for (int i = 0; i < paneList.size(); i++) { CellEditorPane pane = paneList.get(i); iconArray[i] = pane.getIconPath(); @@ -227,9 +226,8 @@ public class CellDSColumnEditor extends CellQuickEditor { new Component[]{uiLabel, uiButton} }; conditionPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - this.add(this.createContentPane(), BorderLayout.CENTER); - this.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); + this.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); } @@ -281,8 +279,6 @@ public class CellDSColumnEditor extends CellQuickEditor { class DSColumnAdvancedEditorPane extends CellEditorPane { - private static final String INSET_TEXT = " "; - //排列顺序 private ResultSetSortConfigPane sortPane; //结果集筛选 @@ -295,14 +291,16 @@ public class CellDSColumnEditor extends CellQuickEditor { private UICheckBox veCheckBox; //补充空白数据 private UICheckBox useMultiplyNumCheckBox; - //补充空白数据书目输入框 + //补充空白数据数目输入框 private UISpinner multiNumSpinner; + //补充空白数据数目面板 可隐藏 + private JPanel multiPane; public DSColumnAdvancedEditorPane() { this.setLayout(new BorderLayout()); this.add(this.createContentPane(), BorderLayout.CENTER); - this.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); + this.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); } @@ -325,13 +323,11 @@ public class CellDSColumnEditor extends CellQuickEditor { filterPane.update(cellElement); //更新单元格扩展属性 updateExtendConfig(); - //更新补充空白设置 updateMultipleConfig(); } } - @SuppressWarnings("Duplicates") @Override public void populate() { if (cellElement != null) { @@ -375,7 +371,6 @@ public class CellDSColumnEditor extends CellQuickEditor { /** * 更新单元格扩展属性 */ - @SuppressWarnings("Duplicates") private void updateExtendConfig() { CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); if (cellExpandAttr == null) { @@ -460,7 +455,7 @@ public class CellDSColumnEditor extends CellQuickEditor { }); //可扩展性 - JPanel extendableDirectionPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane(); + JPanel extendableDirectionPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); extendableDirectionPane.add(heCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Horizontal_Extendable"))); extendableDirectionPane.add(veCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Vertical_Extendable"))); heCheckBox.addChangeListener(new ChangeListener() { @@ -478,13 +473,23 @@ public class CellDSColumnEditor extends CellQuickEditor { } }); + JPanel multiNumPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); //补充空白数据 - JPanel multiNumPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane(); - useMultiplyNumCheckBox = new UICheckBox(Inter.getLocText("Column_Multiple")); - multiNumPane.add(useMultiplyNumCheckBox); - multiNumPane.add(new UILabel(INSET_TEXT)); + useMultiplyNumCheckBox = new UICheckBox(Inter.getLocText("Fill_blank_Data")); + JPanel checkBoxPane = new JPanel(new BorderLayout()); + checkBoxPane.add(useMultiplyNumCheckBox, BorderLayout.WEST); + multiNumPane.add(checkBoxPane); multiNumSpinner = new UISpinner(1, 10000, 1, 1); - multiNumPane.add(multiNumSpinner); + //数据倍数 + UILabel multipleLabel = new UILabel(Inter.getLocText("Column_Multiple")); + multipleLabel.setPreferredSize(new Dimension(60, 20)); + multiPane = TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{ + multipleLabel, multiNumSpinner + } + }, new double[]{P}, new double[]{P, F} + ); + multiNumPane.add(multiPane); useMultiplyNumCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { checkButtonEnabled(); @@ -518,8 +523,10 @@ public class CellDSColumnEditor extends CellQuickEditor { private void checkButtonEnabled() { if (useMultiplyNumCheckBox.isSelected()) { multiNumSpinner.setEnabled(true); + multiPane.setVisible(true); } else { multiNumSpinner.setEnabled(false); + multiPane.setVisible(false); } } @@ -588,6 +595,7 @@ public class CellDSColumnEditor extends CellQuickEditor { if (cellElement != null) { Object value = cellElement.getValue(); if (value != null && value instanceof DSColumn) { + this.formulaField.populateElement(cellElement); DSColumn dSColumn = (DSColumn) value; int sort = dSColumn.getOrder(); this.sortTypePane.setSelectedIndex(sort); diff --git a/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java index 0edadfc32..faebf9b81 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java @@ -5,7 +5,16 @@ import com.fr.base.Style; import com.fr.base.TextFormat; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.FormulaCellAction; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.formula.FormulaFactory; +import com.fr.design.formula.UIFormula; +import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.DesignerContext; +import com.fr.general.IOUtils; +import com.fr.general.Inter; import com.fr.grid.selection.CellSelection; import com.fr.quickeditor.CellQuickEditor; import com.fr.report.ReportHelper; @@ -17,6 +26,8 @@ import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; @@ -29,7 +40,7 @@ import java.awt.event.KeyEvent; */ public class CellFormulaQuickEditor extends CellQuickEditor { //文本域 - private UITextField stringTextField; + private UITextField formulaTextField; //编辑状态 private boolean isEditing = false; @@ -37,20 +48,23 @@ public class CellFormulaQuickEditor extends CellQuickEditor { private boolean reserveInResult = false; private boolean reserveOnWriteOrAnaly = true; + //默认值 + private static final String DEFAULT_FORMULA = "="; + private DocumentListener documentListener = new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(formulaTextField.getText().trim()); } @Override public void removeUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(formulaTextField.getText().trim()); } @Override public void changedUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(formulaTextField.getText().trim()); } }; @@ -65,9 +79,8 @@ public class CellFormulaQuickEditor extends CellQuickEditor { @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); - stringTextField = new UITextField(); - stringTextField.addKeyListener(new KeyAdapter() { + formulaTextField = new UITextField(); + formulaTextField.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { if (tc != null) { @@ -75,8 +88,42 @@ public class CellFormulaQuickEditor extends CellQuickEditor { } } }); - content.add(stringTextField, BorderLayout.CENTER); - return content; + JPanel textFieldPane = new JPanel(new BorderLayout()); + textFieldPane.add(formulaTextField, BorderLayout.CENTER); + textFieldPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5)); + + UIButton formulaButton = new UIButton(IOUtils.readIcon("/com/fr/design/images/m_insert/formula.png")); + formulaButton.setToolTipText(Inter.getLocText("Formula") + "..."); + formulaButton.setPreferredSize(new Dimension(20, formulaTextField.getPreferredSize().height)); + formulaButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + String text = formulaTextField.getText(); + final UIFormula formulaPane = FormulaFactory.createFormulaPane(); + formulaPane.populate(new Formula(text)); + formulaPane.showLargeWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + Formula fm = formulaPane.update(); + if (fm.getContent().length() <= 1) { + formulaTextField.setText(DEFAULT_FORMULA); + } else { + formulaTextField.setText(fm.getContent()); + } + + } + }).setVisible(true); + } + }); + + JPanel pane = new JPanel(new BorderLayout()); + pane.add(textFieldPane, BorderLayout.CENTER); + pane.add(formulaButton, BorderLayout.EAST); + + content.add(pane, BorderLayout.NORTH); + return TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{emptyLabel, content}}, + new double[]{TableLayout.PREFERRED}, + new double[]{TableLayout.PREFERRED, TableLayout.FILL}); } @Override @@ -112,7 +159,7 @@ public class CellFormulaQuickEditor extends CellQuickEditor { } } fireTargetModified(); - stringTextField.requestFocus(); + formulaTextField.requestFocus(); isEditing = false; } @@ -138,7 +185,7 @@ public class CellFormulaQuickEditor extends CellQuickEditor { } } showText(str); - stringTextField.setEditable(tc.isSelectedOneCell()); + formulaTextField.setEditable(tc.isSelectedOneCell()); } /** @@ -151,9 +198,9 @@ public class CellFormulaQuickEditor extends CellQuickEditor { if (isEditing) { return; } - stringTextField.getDocument().removeDocumentListener(documentListener); - stringTextField.setText(str); - stringTextField.getDocument().addDocumentListener(documentListener); + formulaTextField.getDocument().removeDocumentListener(documentListener); + formulaTextField.setText(str); + formulaTextField.getDocument().addDocumentListener(documentListener); } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java index 315e95c57..6bbbf5fcf 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java @@ -5,10 +5,11 @@ import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.ImageCellAction; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; import com.fr.design.report.SelectImagePane; import com.fr.general.ComparatorUtils; -import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; import com.fr.report.cell.cellattr.CellImage; @@ -33,8 +34,7 @@ public class CellImageQuickEditor extends CellQuickEditor { @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); - UIButton editButton = new UIButton(Inter.getLocText("Edit"), IOUtils.readIcon("/com/fr/design/images/m_insert/image.png")); + UIButton editButton = new UIButton(Inter.getLocText("Edit")); editButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -42,11 +42,13 @@ public class CellImageQuickEditor extends CellQuickEditor { } }); editButton.setOpaque(false); - content.add(editButton, BorderLayout.CENTER); + content.add(TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{emptyLabel, editButton}}, + new double[]{TableLayout.PREFERRED}, + new double[]{TableLayout.PREFERRED, TableLayout.FILL}), BorderLayout.CENTER); return content; } - @SuppressWarnings("Duplicates") private void showEditingDialog() { final SelectImagePane imageEditorPane = new SelectImagePane(); imageEditorPane.populate(cellElement); diff --git a/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java index a0cbf705b..9e9bf3bc9 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java @@ -3,6 +3,8 @@ package com.fr.quickeditor.cellquick; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.RichTextCellAction; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; @@ -22,14 +24,15 @@ public class CellRichTextEditor extends CellQuickEditor { super(); } - @SuppressWarnings("Duplicates") @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); richTextButton = new UIButton(); richTextButton.setOpaque(false); - content.add(richTextButton, BorderLayout.CENTER); + content.add(TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{emptyLabel, richTextButton}}, + new double[]{TableLayout.PREFERRED}, + new double[]{TableLayout.PREFERRED, TableLayout.FILL}), BorderLayout.CENTER); return content; } @@ -41,7 +44,8 @@ public class CellRichTextEditor extends CellQuickEditor { @Override protected void refreshDetails() { RichTextCellAction subReportCellAction = new RichTextCellAction(tc); - subReportCellAction.setName(Inter.getLocText("FR-Designer_RichTextEditor")); + subReportCellAction.setName(Inter.getLocText("Edit")); + subReportCellAction.setSmallIcon(null); richTextButton.setAction(subReportCellAction); } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java index f52568287..d0dffdfbd 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java @@ -3,7 +3,8 @@ package com.fr.quickeditor.cellquick; import com.fr.base.Formula; import com.fr.base.Style; import com.fr.base.TextFormat; -import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.gui.itextarea.UITextArea; +import com.fr.grid.GridKeyListener; import com.fr.grid.selection.CellSelection; import com.fr.quickeditor.CellQuickEditor; import com.fr.report.ReportHelper; @@ -22,16 +23,11 @@ import java.awt.event.KeyEvent; * */ public class CellStringQuickEditor extends CellQuickEditor { - - //instance - private static CellStringQuickEditor THIS; - //文本域 - //TODO 9.0 文本域要根据具体文本数量自适应大小,比较难搞,先跳过。 - private UITextField stringTextField; + //文本域 直接可以自适应大小 + private UITextArea stringTextArea; //编辑状态 private boolean isEditing = false; - //august:如果是原来编辑的是公式,要保留公式里的这些属性,不然在公式和字符串转化时,就会丢失这些属性设置。 private boolean reserveInResult = false; private boolean reserveOnWriteOrAnaly = true; @@ -39,17 +35,17 @@ public class CellStringQuickEditor extends CellQuickEditor { private DocumentListener documentListener = new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(stringTextArea.getText().trim()); } @Override public void removeUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(stringTextArea.getText().trim()); } @Override public void changedUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(stringTextArea.getText().trim()); } }; @@ -60,22 +56,37 @@ public class CellStringQuickEditor extends CellQuickEditor { /** * 详细信息面板 - * todo 文本框可自适应大小,公式编辑新写一个 */ @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); - stringTextField = new UITextField(); - stringTextField.addKeyListener(new KeyAdapter() { + stringTextArea = new UITextArea(); + stringTextArea.addKeyListener(new KeyAdapter() { + + @Override + public void keyPressed(KeyEvent e) { + if (tc == null) { + return; + } + if (e.getKeyCode() == KeyEvent.VK_ENTER) { + //todo 按enter键换至下一个单元格 yaoh.wu虽然模仿选中单元格按enter这种场景可以做到,但是原理没有弄清楚。 + GridKeyListener dispatchListener = new GridKeyListener(tc.getGrid()); + dispatchListener.keyPressed(e); + dispatchListener.keyTyped(e); + } + } + @Override public void keyReleased(KeyEvent e) { if (tc != null) { + if (e.getKeyCode() == KeyEvent.VK_ENTER) { + return; + } tc.getGrid().dispatchEvent(e); } } }); - content.add(stringTextField, BorderLayout.CENTER); + content.add(stringTextArea, BorderLayout.CENTER); return content; } @@ -107,7 +118,7 @@ public class CellStringQuickEditor extends CellQuickEditor { } } fireTargetModified(); - stringTextField.requestFocus(); + stringTextArea.requestFocus(); isEditing = false; } @@ -133,7 +144,7 @@ public class CellStringQuickEditor extends CellQuickEditor { } } showText(str); - stringTextField.setEditable(tc.isSelectedOneCell()); + stringTextArea.setEditable(tc.isSelectedOneCell()); } /** @@ -146,9 +157,9 @@ public class CellStringQuickEditor extends CellQuickEditor { if (isEditing) { return; } - stringTextField.getDocument().removeDocumentListener(documentListener); - stringTextField.setText(str); - stringTextField.getDocument().addDocumentListener(documentListener); + stringTextArea.getDocument().removeDocumentListener(documentListener); + stringTextArea.setText(str); + stringTextArea.getDocument().addDocumentListener(documentListener); } @Override diff --git a/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java index 3ef0cda8a..c2d5e52df 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java @@ -3,6 +3,8 @@ package com.fr.quickeditor.cellquick; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.SubReportCellAction; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; @@ -23,21 +25,23 @@ public class CellSubReportEditor extends CellQuickEditor { super(); } - @SuppressWarnings("Duplicates") @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); subReportButton = new UIButton(); subReportButton.setOpaque(false); - content.add(subReportButton, BorderLayout.CENTER); + content.add(TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{emptyLabel, subReportButton}}, + new double[]{TableLayout.PREFERRED}, + new double[]{TableLayout.PREFERRED, TableLayout.FILL}), BorderLayout.CENTER); return content; } @Override protected void refreshDetails() { SubReportCellAction subReportCellAction = new SubReportCellAction(tc); - subReportCellAction.setName(Inter.getLocText(new String[]{"Edit", "Sub_Report"})); + subReportCellAction.setName(Inter.getLocText("Edit")); + subReportCellAction.setSmallIcon(null); subReportButton.setAction(subReportCellAction); }