diff --git a/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java b/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java index 61fe9fefe..0b32a05eb 100644 --- a/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java +++ b/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java @@ -24,7 +24,7 @@ public class ConditionAttributesAction extends AbstractCellElementAction { @Override protected BasicPane populateBasicPane(TemplateCellElement cellElement) { - ConditionAttributesGroupPane pane = new ConditionAttributesGroupPane(); + ConditionAttributesGroupPane pane = ConditionAttributesGroupPane.getInstance(); pane.populate(cellElement.getHighlightGroup()); return pane; diff --git a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java index b0f7f50b7..49ace17a9 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java @@ -4,8 +4,11 @@ import com.fr.base.BaseUtils; import com.fr.design.fun.MenuHandler; import com.fr.design.gui.frpane.HyperlinkGroupPane; import com.fr.design.menu.KeySetUtils; +import com.fr.design.present.ConditionAttributesGroupPane; import com.fr.general.Inter; +import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.FloatSelection; +import com.fr.grid.selection.Selection; import com.fr.page.ReportSettingsProvider; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.DesignState; @@ -23,6 +26,10 @@ import com.fr.design.event.TargetModifiedListener; import com.fr.design.mainframe.cell.QuickEditorRegion; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; +import com.fr.report.cell.DefaultTemplateCellElement; +import com.fr.report.cell.TemplateCellElement; +import com.fr.report.core.SheetUtils; +import com.fr.report.elementcase.TemplateElementCase; import com.fr.report.worksheet.WorkSheet; import com.fr.design.selection.SelectionEvent; import com.fr.design.selection.SelectionListener; @@ -58,18 +65,23 @@ public class ElementCasePaneDelegate extends ElementCasePane { QuickEditorRegion.getInstance().populate(getCurrentEditor()); JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (editingTemplate != null && !editingTemplate.isUpMode()) { + Selection editingSelection = ((ElementCasePaneDelegate)e.getSource()).getSelection(); // 模板初始化完成后,才能初始化超级链接面板 -// HyperlinkGroupPane hyperlinkGroupPane = ReportHyperlinkGroupPane.getInstance(HyperlinkGroupPaneActionImpl.getInstance()); HyperlinkGroupPane hyperlinkGroupPane = editingTemplate.getHyperLinkPane(HyperlinkGroupPaneActionImpl.getInstance()); hyperlinkGroupPane.populate(ElementCasePaneDelegate.this); - if (((ElementCasePaneDelegate)e.getSource()).getSelection() instanceof FloatSelection) { + if (editingSelection instanceof FloatSelection) { EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT_FLOAT); // EastRegionContainerPane.getInstance().replaceCellAttrPane(CellElementPropertyPane.getInstance()); EastRegionContainerPane.getInstance().replaceFloatElementPane(QuickEditorRegion.getInstance()); } else { + // 条件属性 + ConditionAttributesGroupPane conditionAttributesGroupPane = ConditionAttributesGroupPane.getInstance(); + conditionAttributesGroupPane.populate(getEditingCellElement((CellSelection)editingSelection).getHighlightGroup()); + EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT); EastRegionContainerPane.getInstance().replaceCellAttrPane(CellElementPropertyPane.getInstance()); EastRegionContainerPane.getInstance().replaceCellElementPane(QuickEditorRegion.getInstance()); + EastRegionContainerPane.getInstance().replaceConditionAttrPane(conditionAttributesGroupPane); } EastRegionContainerPane.getInstance().replaceHyperlinkPane(hyperlinkGroupPane); EastRegionContainerPane.getInstance().removeParameterPane(); @@ -84,6 +96,20 @@ public class ElementCasePaneDelegate extends ElementCasePane { }); } + private TemplateCellElement getEditingCellElement(CellSelection cs) { + final ElementCasePane ePane = ElementCasePaneDelegate.this; + final TemplateElementCase tplEC = ePane.getEditingElementCase(); + TemplateCellElement editCellElement = tplEC.getTemplateCellElement(cs.getColumn(), cs.getRow()); + if (editCellElement == null) { + editCellElement = new DefaultTemplateCellElement(cs.getColumn(), cs.getRow()); + tplEC.addCellElement(editCellElement); + } + if (tplEC != null) { + SheetUtils.calculateDefaultParent(tplEC); + } + return editCellElement; + } + @Override protected boolean supportRepeatedHeaderFooter() { return true; diff --git a/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java b/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java index 5cfcb6261..822b7d0b3 100644 --- a/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java +++ b/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.fr.base.FRContext; +import com.fr.design.gui.controlpane.UIListControlPane; import com.fr.general.NameObject; import com.fr.design.condition.HighLightConditionAttributesPane; import com.fr.design.gui.controlpane.JListControlPane; @@ -15,13 +16,29 @@ import com.fr.report.cell.cellattr.highlight.Highlight; import com.fr.report.cell.cellattr.highlight.HighlightGroup; import com.fr.stable.Nameable; -public class ConditionAttributesGroupPane extends JListControlPane { +public class ConditionAttributesGroupPane extends UIListControlPane { + private static ConditionAttributesGroupPane singleton; + + private ConditionAttributesGroupPane() { + super(); + } + + public static ConditionAttributesGroupPane getInstance() { + if (singleton == null) { + singleton = new ConditionAttributesGroupPane(); + } + return singleton; + } @Override public NameableCreator[] createNameableCreators() { return new NameableCreator[] { new NameObjectCreator(Inter.getLocText("Condition_Attributes"), DefaultHighlight.class, HighLightConditionAttributesPane.class) }; } + @Override + public void saveSettings() { + } + @Override public String title4PopupWindow() { return Inter.getLocText("Condition_Attributes"); @@ -33,6 +50,7 @@ public class ConditionAttributesGroupPane extends JListControlPane { public void populate(HighlightGroup highlightGroup) { // marks这个必须放在前面,不论是否有高亮分组都可以操作 if (highlightGroup == null || highlightGroup.size() <= 0) { + this.populate(new NameObject[0]); return; } List nameObjectList = new ArrayList(); diff --git a/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java b/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java index 72be5fb33..a040bad36 100644 --- a/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java @@ -268,6 +268,14 @@ public class EastRegionContainerPane extends UIEastResizableContainer { return propertyItemMap.get(KEY_WIDGET_SETTINGS).getContentPane(); } + public void replaceConditionAttrPane(JComponent pane) { + propertyItemMap.get(KEY_CONDITION_ATTR).replaceContentPane(pane); + } + + public JComponent getConditionAttrPane() { + return propertyItemMap.get(KEY_CONDITION_ATTR).getContentPane(); + } + public void replaceHyperlinkPane(JComponent pane) { propertyItemMap.get(KEY_HYPERLINK).replaceContentPane(pane); }