diff --git a/designer/src/com/fr/design/actions/cell/CellAttributeTableAction.java b/designer/src/com/fr/design/actions/cell/CellAttributeTableAction.java index 2906306d0..7c554ff04 100644 --- a/designer/src/com/fr/design/actions/cell/CellAttributeTableAction.java +++ b/designer/src/com/fr/design/actions/cell/CellAttributeTableAction.java @@ -1,10 +1,10 @@ package com.fr.design.actions.cell; -import java.awt.event.ActionEvent; - import com.fr.design.actions.UpdateAction; import com.fr.design.mainframe.CellElementPropertyPane; +import java.awt.event.ActionEvent; + /** * 所有的CellAttributeTableAction都是指向单元格属性表的,点了就自动跳转到单元格属性表 * diff --git a/designer/src/com/fr/design/actions/cell/CellWidgetAttrAction.java b/designer/src/com/fr/design/actions/cell/CellWidgetAttrAction.java index f5307b2ac..2a231a21f 100644 --- a/designer/src/com/fr/design/actions/cell/CellWidgetAttrAction.java +++ b/designer/src/com/fr/design/actions/cell/CellWidgetAttrAction.java @@ -1,24 +1,18 @@ package com.fr.design.actions.cell; import com.fr.base.BaseUtils; -import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.actions.UpdateAction; +import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.menu.KeySetUtils; -import com.fr.design.present.CellWriteAttrPane; -import com.fr.design.dialog.BasicPane; -import com.fr.form.ui.Widget; -import com.fr.general.FRLogger; -import com.fr.grid.selection.CellSelection; -import com.fr.grid.selection.Selection; -import com.fr.privilege.finegrain.WidgetPrivilegeControl; -import com.fr.report.cell.TemplateCellElement; + +import java.awt.event.ActionEvent; /** * Cell Widget Attribute. */ -public class CellWidgetAttrAction extends AbstractCellElementAction { +public class CellWidgetAttrAction extends UpdateAction { - public CellWidgetAttrAction(ElementCasePane t) { - super(t); + public CellWidgetAttrAction() { this.setMenuKeySet(KeySetUtils.CELL_WIDGET_ATTR); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); @@ -26,47 +20,7 @@ public class CellWidgetAttrAction extends AbstractCellElementAction { } @Override - protected BasicPane populateBasicPane(TemplateCellElement cellElement) { - CellWriteAttrPane pane = new CellWriteAttrPane(this.getEditingComponent()); - //got simple cell element from column and row. - pane.populate(cellElement); - - return pane; - } - - @Override - protected void updateBasicPane(BasicPane bp, TemplateCellElement cellElement) { - CellWriteAttrPane pane = (CellWriteAttrPane) bp; - if (cellElement.getWidget() == null) { - pane.update(cellElement); - return; - } - try { - Widget oldWidget = (Widget) cellElement.getWidget().clone(); - pane.update(cellElement); - //这边需要重新设置权限细粒度的hashset是因为Update是直接生成一个新的来update的,所以以前里面的hashset都没有了 - Widget newWidget = cellElement.getWidget(); - if (newWidget.getClass() == oldWidget.getClass()) { - newWidget.setWidgetPrivilegeControl((WidgetPrivilegeControl) oldWidget.getWidgetPrivilegeControl().clone()); - } - } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); - } - } - - @Override - protected boolean isNeedShinkToFit() { - return true; - } - - @Override - public void update() { - ElementCasePane ePane = this.getEditingComponent(); - Selection sel = ePane.getSelection(); - if (sel instanceof CellSelection) { - this.setEnabled(true); - } else { - this.setEnabled(false); - } + public void actionPerformed(ActionEvent e) { + EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS); } } \ No newline at end of file diff --git a/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java b/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java new file mode 100644 index 000000000..15acd796c --- /dev/null +++ b/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java @@ -0,0 +1,28 @@ +/* + * Copyright(c) 2001-2010, FineReport Inc, All Rights Reserved. + */ +package com.fr.design.actions.cell; + +import com.fr.base.BaseUtils; +import com.fr.design.actions.UpdateAction; +import com.fr.design.mainframe.EastRegionContainerPane; +import com.fr.design.menu.KeySetUtils; + +import java.awt.event.ActionEvent; + +/** + * Condition Attributes. + */ +public class ConditionAttributesAction extends UpdateAction { + public ConditionAttributesAction() { + this.setMenuKeySet(KeySetUtils.CONDITION_ATTR); + this.setName(getMenuKeySet().getMenuKeySetName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_format/highlight.png")); + } + + @Override + public void actionPerformed(ActionEvent e) { + EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_CONDITION_ATTR); + } +} \ No newline at end of file diff --git a/designer/src/com/fr/design/actions/cell/GlobalStyleMenuDef.java b/designer/src/com/fr/design/actions/cell/GlobalStyleMenuDef.java index 27adef643..63c38a042 100644 --- a/designer/src/com/fr/design/actions/cell/GlobalStyleMenuDef.java +++ b/designer/src/com/fr/design/actions/cell/GlobalStyleMenuDef.java @@ -186,6 +186,7 @@ public class GlobalStyleMenuDef extends MenuDef { } stylePane.updateGlobalStyle(getEditingComponent()); + CellElementPropertyPane.getInstance().GoToPane(Inter.getLocText("FR-Designer-Widget_Style")); return true; } diff --git a/designer/src/com/fr/design/actions/edit/HyperlinkAction.java b/designer/src/com/fr/design/actions/edit/HyperlinkAction.java new file mode 100644 index 000000000..2fcc46901 --- /dev/null +++ b/designer/src/com/fr/design/actions/edit/HyperlinkAction.java @@ -0,0 +1,29 @@ +/* + * Copyright(c) 2001-2010, FineReport Inc, All Rights Reserved. + */ +package com.fr.design.actions.edit; + +import com.fr.base.BaseUtils; +import com.fr.design.actions.UpdateAction; +import com.fr.design.mainframe.EastRegionContainerPane; +import com.fr.design.menu.KeySetUtils; + +import java.awt.event.ActionEvent; + +/** + * HyperlinkAction. + */ +public class HyperlinkAction extends UpdateAction { + + public HyperlinkAction() { + this.setMenuKeySet(KeySetUtils.HYPER_LINK); + this.setName(getMenuKeySet().getMenuKeySetName() + "..."); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/hyperLink.png")); + } + + @Override + public void actionPerformed(ActionEvent e) { + EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_HYPERLINK); + } +} \ No newline at end of file diff --git a/designer/src/com/fr/design/cell/editor/AbstractCellEditor.java b/designer/src/com/fr/design/cell/editor/AbstractCellEditor.java index cc9c43564..33e29c1f6 100644 --- a/designer/src/com/fr/design/cell/editor/AbstractCellEditor.java +++ b/designer/src/com/fr/design/cell/editor/AbstractCellEditor.java @@ -7,6 +7,7 @@ import java.awt.Point; import javax.swing.event.EventListenerList; +import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.grid.event.CellEditorEvent; import com.fr.grid.event.CellEditorListener; @@ -114,6 +115,7 @@ public abstract class AbstractCellEditor implements CellEditor { } if(ePane != null) { ePane.fireSelectionChangeListener(); + EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_CELL_ELEMENT); } } diff --git a/designer/src/com/fr/design/mainframe/CellElementPropertyPane.java b/designer/src/com/fr/design/mainframe/CellElementPropertyPane.java index 1e79ee5ad..a607538d6 100644 --- a/designer/src/com/fr/design/mainframe/CellElementPropertyPane.java +++ b/designer/src/com/fr/design/mainframe/CellElementPropertyPane.java @@ -176,6 +176,7 @@ public class CellElementPropertyPane extends DockingView { */ public void GoToPane(String... id) { cellElementEditPane.setSelectedIndex(id); + EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_CELL_ATTR); EastRegionContainerPane.getInstance().setWindow2PreferWidth(); } diff --git a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java index cf63c4448..c5bd1e952 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; +import com.fr.design.actions.edit.HyperlinkAction; import com.fr.design.fun.MenuHandler; import com.fr.design.gui.frpane.HyperlinkGroupPane; import com.fr.design.menu.KeySetUtils; @@ -169,12 +170,13 @@ public class ElementCasePaneDelegate extends ElementCasePane { MenuDef menuDef = new MenuDef(KeySetUtils.CELL.getMenuKeySetName(), KeySetUtils.CELL.getMnemonic()); menuDef.addShortCut(new CellExpandAttrAction()); - menuDef.addShortCut(new CellWidgetAttrAction(this)); + menuDef.addShortCut(new CellWidgetAttrAction()); menuDef.addShortCut(new GlobalStyleMenuDef(this)); + menuDef.addShortCut(new ConditionAttributesAction()); // 单元格形态 menuDef.addShortCut(DeprecatedActionManager.getPresentMenu(this)); - + menuDef.addShortCut(new HyperlinkAction()); menuDef.addShortCut(SeparatorDef.DEFAULT); menuDef.addShortCut(new MergeCellAction(this)); menuDef.addShortCut(new UnmergeCellAction(this)); diff --git a/designer/src/com/fr/grid/GridMouseAdapter.java b/designer/src/com/fr/grid/GridMouseAdapter.java index fc88714ad..90b302d8d 100644 --- a/designer/src/com/fr/grid/GridMouseAdapter.java +++ b/designer/src/com/fr/grid/GridMouseAdapter.java @@ -6,6 +6,7 @@ import com.fr.base.ScreenResolution; import com.fr.common.inputevent.InputEventBaseOnOS; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.JSliderPane; import com.fr.design.present.CellWriteAttrPane; @@ -204,7 +205,6 @@ public class GridMouseAdapter implements MouseListener, MouseWheelListener, Mous */ private void showWidetWindow(TemplateCellElement cellElement, TemplateElementCase report) { -// int resolution = ScreenResolution.getScreenResolution(); DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); double fixed_pos_x = this.oldEvtX - columnWidthList.getRangeValue(grid.getHorizontalValue(), cellElement.getColumn()).toPixD(resolution); @@ -212,7 +212,7 @@ public class GridMouseAdapter implements MouseListener, MouseWheelListener, Mous double cell_width = columnWidthList.getRangeValue(cellElement.getColumn(), cellElement.getColumn() + cellElement.getColumnSpan()).toPixD(resolution); double cell_height = rowHeightList.getRangeValue(cellElement.getRow(), cellElement.getRow() + cellElement.getRowSpan()).toPixD(resolution); if (fitSizeToShow(cell_width, cell_height, fixed_pos_x, fixed_pos_y)) { - CellWriteAttrPane.showWidgetWindow(grid.getElementCasePane()); + EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS); } } diff --git a/designer/src/com/fr/grid/selection/CellSelection.java b/designer/src/com/fr/grid/selection/CellSelection.java index d3778d72a..890affae3 100644 --- a/designer/src/com/fr/grid/selection/CellSelection.java +++ b/designer/src/com/fr/grid/selection/CellSelection.java @@ -8,6 +8,7 @@ import com.fr.design.actions.cell.GlobalStyleMenuDef.GlobalStyleSelection; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.edit.CopyAction; import com.fr.design.actions.edit.CutAction; +import com.fr.design.actions.edit.HyperlinkAction; import com.fr.design.actions.edit.PasteAction; import com.fr.design.actions.utils.DeprecatedActionManager; import com.fr.design.cell.clipboard.CellElementsClip; @@ -456,11 +457,13 @@ public class CellSelection extends Selection { } JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jTemplate.isJWorkBook()){ //表单中报表块编辑屏蔽掉 控件设置 - popup.add(new CellWidgetAttrAction(ePane).createMenuItem()); + popup.add(new CellWidgetAttrAction().createMenuItem()); } popup.add(new CellExpandAttrAction().createMenuItem()); popup.add(DeprecatedActionManager.getPresentMenu(ePane).createJMenu()); popup.add(new CellAttributeAction().createMenuItem()); + popup.add(new ConditionAttributesAction().createMenuItem()); + popup.add(new HyperlinkAction().createMenuItem()); // cut, copy and paste popup.addSeparator(); popup.add(new CutAction(ePane).createMenuItem()); diff --git a/designer/src/com/fr/grid/selection/FloatSelection.java b/designer/src/com/fr/grid/selection/FloatSelection.java index 214e82e09..de44152f7 100644 --- a/designer/src/com/fr/grid/selection/FloatSelection.java +++ b/designer/src/com/fr/grid/selection/FloatSelection.java @@ -9,11 +9,7 @@ import com.fr.base.FRContext; import com.fr.design.actions.cell.CleanAuthorityAction; import com.fr.design.actions.cell.FloatStyleAction; import com.fr.design.actions.core.ActionFactory; -import com.fr.design.actions.edit.CopyAction; -import com.fr.design.actions.edit.CutAction; -import com.fr.design.actions.edit.DeleteAction; -import com.fr.design.actions.edit.EditFloatElementNameAction; -import com.fr.design.actions.edit.PasteAction; +import com.fr.design.actions.edit.*; import com.fr.design.actions.utils.DeprecatedActionManager; import com.fr.design.cell.clipboard.CellElementsClip; import com.fr.design.cell.clipboard.ElementsTransferable; @@ -125,6 +121,7 @@ public class FloatSelection extends Selection { } popup.add(DeprecatedActionManager.getCellMenu(ePane).createJMenu()); popup.add(new FloatStyleAction(ePane).createMenuItem()); + popup.add(new HyperlinkAction().createMenuItem()); // cut, copy and paste popup.addSeparator(); diff --git a/designer/src/com/fr/poly/creator/ECBlockPane.java b/designer/src/com/fr/poly/creator/ECBlockPane.java index 61ad308b9..edd93ce9a 100644 --- a/designer/src/com/fr/poly/creator/ECBlockPane.java +++ b/designer/src/com/fr/poly/creator/ECBlockPane.java @@ -4,6 +4,7 @@ package com.fr.poly.creator; import com.fr.base.BaseUtils; +import com.fr.design.actions.edit.HyperlinkAction; import com.fr.design.menu.KeySetUtils; import com.fr.general.Inter; import com.fr.page.ReportSettingsProvider; @@ -142,12 +143,14 @@ public class ECBlockPane extends PolyElementCasePane { MenuDef menuDef = new MenuDef(KeySetUtils.CELL.getMenuKeySetName(), KeySetUtils.CELL.getMnemonic()); menuDef.addShortCut(new CellExpandAttrAction()); - menuDef.addShortCut(new CellWidgetAttrAction(this)); + menuDef.addShortCut(new CellWidgetAttrAction()); menuDef.addShortCut(new GlobalStyleMenuDef(this)); + menuDef.addShortCut(new ConditionAttributesAction()); // 单元格形态 menuDef.addShortCut(DeprecatedActionManager.getPresentMenu(this)); + menuDef.addShortCut(new HyperlinkAction()); menuDef.addShortCut(SeparatorDef.DEFAULT); menuDef.addShortCut(new MergeCellAction(this)); menuDef.addShortCut(new UnmergeCellAction(this)); diff --git a/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java b/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java index ab2dff8b2..3aec09d45 100644 --- a/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java @@ -39,17 +39,17 @@ public class EastRegionContainerPane extends UIEastResizableContainer { private static final int POPUP_MIN_HEIGHT = 145; private static final int POPUP_MAX_HEIGHT = 480; private static final int POPUP_DEFAULT_HEIGHT = 360; - private static final String KEY_CELL_ELEMENT = "cellElement"; - private static final String KEY_CELL_ATTR = "cellAttr"; - private static final String KEY_FLOAT_ELEMENT = "floatElement"; - private static final String KEY_WIDGET_SETTINGS = "widgetSettings"; - private static final String KEY_CONDITION_ATTR = "conditionAttr"; - private static final String KEY_HYPERLINK = "hyperlink"; - private static final String KEY_WIDGET_LIB = "widgetLib"; - private static final String KEY_AUTHORITY_EDITION = "authorityEdition"; - private static final String KEY_CONFIGURED_ROLES = "editedRoles"; - private static final String DEFAULT_PANE = "defaultPane"; - private static final String DEFAULT_AUTHORITY_PANE = "defaultAuthorityPane"; + public static final String KEY_CELL_ELEMENT = "cellElement"; + public static final String KEY_CELL_ATTR = "cellAttr"; + public static final String KEY_FLOAT_ELEMENT = "floatElement"; + public static final String KEY_WIDGET_SETTINGS = "widgetSettings"; + public static final String KEY_CONDITION_ATTR = "conditionAttr"; + public static final String KEY_HYPERLINK = "hyperlink"; + public static final String KEY_WIDGET_LIB = "widgetLib"; + public static final String KEY_AUTHORITY_EDITION = "authorityEdition"; + public static final String KEY_CONFIGURED_ROLES = "editedRoles"; + public static final String DEFAULT_PANE = "defaultPane"; + public static final String DEFAULT_AUTHORITY_PANE = "defaultAuthorityPane"; private JPanel defaultPane; // "无可用配置项"面板 private JPanel defaultAuthorityPane; // "该元素不支持权限编辑" @@ -359,6 +359,17 @@ public class EastRegionContainerPane extends UIEastResizableContainer { propertyItemMap.get(KEY_WIDGET_SETTINGS).removeHeaderPane(); } + public void switchTabTo(String tabName) { + PropertyItem propertyItem = propertyItemMap.get(tabName); + if (propertyItem == null) { + return; + } + if (propertyItem.isVisible() && propertyItem.isEnabled() && !propertyItem.isPoppedOut()) { + propertyCard.show(rightPane, tabName); + propertyItem.setTabButtonSelected(); + } + } + /** * 刷新右面板 */ diff --git a/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java b/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java index 280a12067..e84259fd8 100644 --- a/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java +++ b/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java @@ -114,7 +114,7 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP FormWidgetDetailPane.getInstance(this)); if (!BaseUtils.isAuthorityEditing()) { ParameterPropertyPane parameterPropertyPane = ParameterPropertyPane.getInstance(this); - parameterPropertyPane.setAddParaPaneVisible(true); + parameterPropertyPane.refreshState(); EastRegionContainerPane.getInstance().addParameterPane(parameterPropertyPane); EastRegionContainerPane.getInstance().setParameterHeight(parameterPropertyPane.getPreferredSize().height); EastRegionContainerPane.getInstance().replaceWidgetSettingsPane( diff --git a/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java b/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java index 28c912c36..9404964a6 100644 --- a/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java +++ b/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java @@ -45,7 +45,7 @@ public class ParameterPropertyPane extends JPanel{ revalidate(); } - public ParameterPropertyPane() { + private ParameterPropertyPane() { toolbarPane = new ParameterToolBarPane(); BasicScrollPane basicScrollPane = new BasicScrollPane() { @Override @@ -77,6 +77,11 @@ public class ParameterPropertyPane extends JPanel{ this.add(addParaPane, BorderLayout.CENTER); } + // 显示或隐藏添加参数面板 + public void refreshState() { + setAddParaPaneVisible(toolbarPane.hasSelectedLabelItem()); + } + public void setAddParaPaneVisible(boolean isVisible) { if (isVisible == addParaPane.isVisible()) { return; diff --git a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java index daac4c2db..16fc6ce04 100644 --- a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java +++ b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java @@ -82,6 +82,7 @@ public class ParameterToolBarPane extends BasicBeanPane { this.add(label); if (parameterArray.length == 0) { + ParameterPropertyPane.getInstance().refreshState(); this.setVisible(false); this.repaint(); return; @@ -102,6 +103,7 @@ public class ParameterToolBarPane extends BasicBeanPane { this.add(addAll); this.doLayout(); + ParameterPropertyPane.getInstance().refreshState(); this.repaint(); }