diff --git a/designer/src/com/fr/design/actions/cell/CleanAuthorityAction.java b/designer/src/com/fr/design/actions/cell/CleanAuthorityAction.java index 0251654f40..e941068d45 100644 --- a/designer/src/com/fr/design/actions/cell/CleanAuthorityAction.java +++ b/designer/src/com/fr/design/actions/cell/CleanAuthorityAction.java @@ -1 +1,141 @@ -package com.fr.design.actions.cell; import com.fr.design.actions.ElementCaseAction; import com.fr.design.mainframe.AuthorityPropertyPane; import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.roleAuthority.ReportAndFSManagePane; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; 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.report.cell.FloatElement; import com.fr.report.cell.TemplateCellElement; import com.fr.report.elementcase.TemplateElementCase; import java.awt.*; import java.awt.event.ActionEvent; /** * Author : daisy * Date: 13-9-23 * Time: 下午2:41 */ public class CleanAuthorityAction extends ElementCaseAction { public CleanAuthorityAction(ElementCasePane t) { super(t); this.setName(Inter.getLocText(new String[]{"Clear", "DashBoard-Potence"})); } /** * 清楚权限动作 * * @param evt 事件 */ public void actionPerformed(ActionEvent evt) { ElementCasePane reportPane = getEditingComponent(); Selection selection = reportPane.getSelection(); String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName(); if (selection instanceof FloatSelection) { String name = ((FloatSelection) selection).getSelectedFloatName(); TemplateElementCase ec = reportPane.getEditingElementCase(); FloatElement fe = ec.getFloatElement(name); if (fe.isDoneAuthority(selectedRoles)) { fe.cleanAuthority(selectedRoles); } doAfterAuthority(reportPane); return; } CellSelection cellSelection = (CellSelection) selection; boolean isChooseColumnRow = cellSelection.getSelectedType() == CellSelection.CHOOSE_COLUMN || cellSelection.getSelectedType() == CellSelection.CHOOSE_ROW; if (isChooseColumnRow && cellSelection.getCellRectangleCount() == 1) { cleanColumnRow(cellSelection, reportPane, selectedRoles); } else { cleanCell(cellSelection, reportPane, selectedRoles); } doAfterAuthority(reportPane); } private void doAfterAuthority(ElementCasePane reportPane) { reportPane.repaint(); reportPane.fireTargetModified(); RolesAlreadyEditedPane.getInstance().refreshDockingView(); RolesAlreadyEditedPane.getInstance().repaint(); if (EastRegionContainerPane.getInstance().getUpPane() instanceof AuthorityPropertyPane) { AuthorityPropertyPane authorityPropertyPane = (AuthorityPropertyPane) EastRegionContainerPane.getInstance().getUpPane(); authorityPropertyPane.populate(); EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.AUTHORITY_EDITION); EastRegionContainerPane.getInstance().replaceAuthorityEditionPane(authorityPropertyPane); } } /** * 清除单元格对应的角色的权限 * * @param cellSelection * @param reportPane */ private void cleanCell(CellSelection cellSelection, ElementCasePane reportPane, String selectedRoles) { if (selectedRoles == null) { return; } TemplateElementCase elementCase = reportPane.getEditingElementCase(); int cellRectangleCount = cellSelection.getCellRectangleCount(); for (int rect = 0; rect < cellRectangleCount; rect++) { Rectangle cellRectangle = cellSelection.getCellRectangle(rect); for (int j = 0; j < cellRectangle.height; j++) { for (int i = 0; i < cellRectangle.width; i++) { int column = i + cellRectangle.x; int row = j + cellRectangle.y; TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row); if (cellElement == null) { continue; } //清除权限 if (cellElement.isDoneAuthority(selectedRoles) || cellElement.isDoneNewValueAuthority(selectedRoles)) { cellElement.cleanAuthority(selectedRoles); } if (cellElement.getWidget() == null) { continue; } boolean isDoneAuthority = cellElement.getWidget().isDoneVisibleAuthority(selectedRoles) || cellElement.getWidget().isDoneUsableAuthority(selectedRoles); if (isDoneAuthority) { cellElement.getWidget().cleanAuthority(selectedRoles); } } } } } private void cleanColumnRow(CellSelection cellSelection, ElementCasePane reportPane, String selectedRoles) { if (selectedRoles == null) { return; } TemplateElementCase elementCase = reportPane.getEditingElementCase(); if (cellSelection.getSelectedType() == CellSelection.CHOOSE_COLUMN) { for (int col = cellSelection.getColumn(); col < cellSelection.getColumn() + cellSelection.getColumnSpan(); col++) { elementCase.removeColumnPrivilegeControl(col, selectedRoles); } } else { for (int row = cellSelection.getRow(); row < cellSelection.getRow() + cellSelection.getRowSpan(); row++) { elementCase.removeRowPrivilegeControl(row, selectedRoles); } } } /** * 是否需要撤销动作 * * @return 不需要 */ public boolean executeActionReturnUndoRecordNeeded() { return false; } } \ No newline at end of file +package com.fr.design.actions.cell; + +import com.fr.design.actions.ElementCaseAction; +import com.fr.design.mainframe.AuthorityPropertyPane; +import com.fr.design.mainframe.EastRegionContainerPane; +import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.roleAuthority.ReportAndFSManagePane; +import com.fr.design.roleAuthority.RolesAlreadyEditedPane; +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.report.cell.FloatElement; +import com.fr.report.cell.TemplateCellElement; +import com.fr.report.elementcase.TemplateElementCase; + +import java.awt.*; +import java.awt.event.ActionEvent; + +/** + * Author : daisy + * Date: 13-9-23 + * Time: 下午2:41 + */ +public class CleanAuthorityAction extends ElementCaseAction { + + public CleanAuthorityAction(ElementCasePane t) { + super(t); + this.setName(Inter.getLocText(new String[]{"Clear", "DashBoard-Potence"})); + } + + + /** + * 清楚权限动作 + * + * @param evt 事件 + */ + public void actionPerformed(ActionEvent evt) { + ElementCasePane reportPane = getEditingComponent(); + Selection selection = reportPane.getSelection(); + String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName(); + if (selection instanceof FloatSelection) { + String name = ((FloatSelection) selection).getSelectedFloatName(); + TemplateElementCase ec = reportPane.getEditingElementCase(); + FloatElement fe = ec.getFloatElement(name); + if (fe.isDoneAuthority(selectedRoles)) { + fe.cleanAuthority(selectedRoles); + } + doAfterAuthority(reportPane); + return; + } + CellSelection cellSelection = (CellSelection) selection; + boolean isChooseColumnRow = cellSelection.getSelectedType() == CellSelection.CHOOSE_COLUMN + || cellSelection.getSelectedType() == CellSelection.CHOOSE_ROW; + if (isChooseColumnRow && cellSelection.getCellRectangleCount() == 1) { + cleanColumnRow(cellSelection, reportPane, selectedRoles); + } else { + cleanCell(cellSelection, reportPane, selectedRoles); + } + doAfterAuthority(reportPane); + } + + + private void doAfterAuthority(ElementCasePane reportPane) { + reportPane.repaint(); + reportPane.fireTargetModified(); + RolesAlreadyEditedPane.getInstance().refreshDockingView(); + RolesAlreadyEditedPane.getInstance().repaint(); + if (EastRegionContainerPane.getInstance().getUpPane() instanceof AuthorityPropertyPane) { + AuthorityPropertyPane authorityPropertyPane = (AuthorityPropertyPane) EastRegionContainerPane.getInstance().getUpPane(); + authorityPropertyPane.populate(); + EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.AUTHORITY_EDITION); + EastRegionContainerPane.getInstance().replaceAuthorityEditionPane(authorityPropertyPane); + } + } + + /** + * 清除单元格对应的角色的权限 + * + * @param cellSelection + * @param reportPane + */ + private void cleanCell(CellSelection cellSelection, ElementCasePane reportPane, String selectedRoles) { + if (selectedRoles == null) { + return; + } + TemplateElementCase elementCase = reportPane.getEditingElementCase(); + int cellRectangleCount = cellSelection.getCellRectangleCount(); + for (int rect = 0; rect < cellRectangleCount; rect++) { + Rectangle cellRectangle = cellSelection.getCellRectangle(rect); + for (int j = 0; j < cellRectangle.height; j++) { + for (int i = 0; i < cellRectangle.width; i++) { + int column = i + cellRectangle.x; + int row = j + cellRectangle.y; + TemplateCellElement cellElement = elementCase.getTemplateCellElement(column, row); + if (cellElement == null) { + continue; + } + //清除权限 + if (cellElement.isDoneAuthority(selectedRoles) || cellElement.isDoneNewValueAuthority(selectedRoles)) { + cellElement.cleanAuthority(selectedRoles); + } + if (cellElement.getWidget() == null) { + continue; + } + boolean isDoneAuthority = cellElement.getWidget().isDoneVisibleAuthority(selectedRoles) || + cellElement.getWidget().isDoneUsableAuthority(selectedRoles); + + if (isDoneAuthority) { + cellElement.getWidget().cleanAuthority(selectedRoles); + } + } + } + } + } + + private void cleanColumnRow(CellSelection cellSelection, ElementCasePane reportPane, String selectedRoles) { + if (selectedRoles == null) { + return; + } + TemplateElementCase elementCase = reportPane.getEditingElementCase(); + if (cellSelection.getSelectedType() == CellSelection.CHOOSE_COLUMN) { + for (int col = cellSelection.getColumn(); col < cellSelection.getColumn() + cellSelection.getColumnSpan(); col++) { + elementCase.removeColumnPrivilegeControl(col, selectedRoles); + } + } else { + for (int row = cellSelection.getRow(); row < cellSelection.getRow() + cellSelection.getRowSpan(); row++) { + elementCase.removeRowPrivilegeControl(row, selectedRoles); + } + } + } + + /** + * 是否需要撤销动作 + * + * @return 不需要 + */ + public boolean executeActionReturnUndoRecordNeeded() { + return false; + } +} \ No newline at end of file