Browse Source

Merge pull request #921 in DESIGN/design from ~HADES/design:release/10.0 to release/10.0

* commit '2d61504e945ae61d4fc4904263d488a0a261d13e':
  REPORT-16650 设计器权限编辑 多角色树多选无效
bugfix/10.0
Hades 6 years ago
parent
commit
6be32d27ea
  1. 91
      designer-form/src/main/java/com/fr/design/designer/properties/FormWidgetAuthorityEditPane.java

91
designer-form/src/main/java/com/fr/design/designer/properties/FormWidgetAuthorityEditPane.java

@ -4,14 +4,18 @@ import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.tree.TreePath;
import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.LayoutConstants;
import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.HistoryTemplateListCache;
import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.AuthorityEditPane; import com.fr.design.mainframe.AuthorityEditPane;
@ -22,6 +26,9 @@ import com.fr.design.roleAuthority.ReportAndFSManagePane;
import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.roleAuthority.RolesAlreadyEditedPane;
import com.fr.form.ui.Widget; import com.fr.form.ui.Widget;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.stable.ArrayUtils;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
/** /**
@ -34,15 +41,21 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
private Widget[] widgets = null; private Widget[] widgets = null;
private UICheckBox widgetVisible = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Visible")); private UICheckBox widgetVisible = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Visible"));
private UICheckBox widgetAvailable = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Enabled")); private UICheckBox widgetAvailable = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Enabled"));
private String[] selectedArray;
private ItemListener visibleItemListener = new ItemListener() { private ItemListener visibleItemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName(); String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName();
if (selectedRoles == null) { if (selectedRoles == null) {
return; return;
} }
if (widgets != null && widgets.length > 0) { initSelectedArray();
for (int i = 0; i < widgets.length; i++) { if (ArrayUtils.isEmpty(selectedArray)) {
widgets[i].changeVisibleAuthorityState(selectedRoles, widgetVisible.isSelected()); return;
}
for (String selectedRole : selectedArray) {
for (Widget widget : widgets) {
widget.changeVisibleAuthorityState(selectedRole, widgetVisible.isSelected());
} }
} }
doAfterAuthority(); doAfterAuthority();
@ -51,6 +64,7 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
private ItemListener usableItemListener = new ItemListener() { private ItemListener usableItemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName(); String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName();
if (ComparatorUtils.equals(selectedRoles, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Role"))) { if (ComparatorUtils.equals(selectedRoles, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Role"))) {
@ -59,9 +73,13 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
if (selectedRoles == null) { if (selectedRoles == null) {
return; return;
} }
if (widgets != null && widgets.length > 0) { initSelectedArray();
for (int i = 0; i < widgets.length; i++) { if (ArrayUtils.isEmpty(selectedArray)) {
widgets[i].changeUsableAuthorityState(selectedRoles, widgetAvailable.isSelected()); return;
}
for (String selectedRole : selectedArray) {
for (Widget widget : widgets) {
widget.changeUsableAuthorityState(selectedRole, widgetAvailable.isSelected());
} }
} }
doAfterAuthority(); doAfterAuthority();
@ -78,7 +96,7 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
private void doAfterAuthority() { private void doAfterAuthority() {
designer.repaint(); designer.repaint();
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().fireTargetModified(); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified();
RolesAlreadyEditedPane.getInstance().refreshDockingView(); RolesAlreadyEditedPane.getInstance().refreshDockingView();
RolesAlreadyEditedPane.getInstance().setReportAndFSSelectedRoles(); RolesAlreadyEditedPane.getInstance().setReportAndFSSelectedRoles();
RolesAlreadyEditedPane.getInstance().repaint(); RolesAlreadyEditedPane.getInstance().repaint();
@ -90,6 +108,7 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
* *
* @date 2014-12-21-下午6:19:43 * @date 2014-12-21-下午6:19:43
*/ */
@Override
public void populateType() { public void populateType() {
type.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Widget_Form_Widget_Config")); type.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Widget_Form_Widget_Config"));
} }
@ -99,15 +118,16 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
* *
* @date 2014-12-21-下午7:12:27 * @date 2014-12-21-下午7:12:27
*/ */
@Override
public void populateName() { public void populateName() {
String nameText = "";
if (widgets == null || widgets.length <= 0) { if (widgets == null || widgets.length <= 0) {
return; return;
} }
for (int i = 0; i < widgets.length; i++) { List<String> widgetNames = new ArrayList<String>();
nameText += "," + widgets[i].getClass().getSimpleName(); for (Widget widget : widgets) {
widgetNames.add(widget.getClass().getSimpleName());
} }
name.setText(nameText.substring(1)); name.setText(StableUtils.join(widgetNames, ","));
} }
/** /**
@ -116,6 +136,7 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
* @return 面板 * @return 面板
* @date 2014-12-21-下午6:19:03 * @date 2014-12-21-下午6:19:03
*/ */
@Override
public JPanel populateCheckPane() { public JPanel populateCheckPane() {
checkPane.add(populateWidgetCheckPane(), BorderLayout.CENTER); checkPane.add(populateWidgetCheckPane(), BorderLayout.CENTER);
checkPane.setBorder(BorderFactory.createEmptyBorder(0, LEFT_CHECKPANE, 0, 0)); checkPane.setBorder(BorderFactory.createEmptyBorder(0, LEFT_CHECKPANE, 0, 0));
@ -138,10 +159,11 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
/** /**
* 对单元格区域进行操作时的权限编辑页面 * 对单元格区域进行操作时的权限编辑页面
*/ */
@Override
public void populateDetials() { public void populateDetials() {
//更新说明要是JWorkBook的话,说明鼠标焦点又改变了 //更新说明要是JWorkBook的话,说明鼠标焦点又改变了
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setAuthorityMode(true); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().setAuthorityMode(true);
signelSelection(); singleSelection();
refreshCreator(); refreshCreator();
//如果是布局选中不支持的元素则显示“该元素不支持权限控制” //如果是布局选中不支持的元素则显示“该元素不支持权限控制”
@ -186,8 +208,8 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
//实现单选 //实现单选
private void signelSelection() { private void singleSelection() {
if (HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().isJWorkBook()) { if (HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().isJWorkBook()) {
//清工具栏 //清工具栏
JComponent component = DesignerContext.getDesignerFrame().getToolbarComponent(); JComponent component = DesignerContext.getDesignerFrame().getToolbarComponent();
if (component instanceof AuthorityEditToolBarComponent) { if (component instanceof AuthorityEditToolBarComponent) {
@ -195,7 +217,7 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
} }
//清空报表主体的单元格选择 //清空报表主体的单元格选择
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().removeTemplateSelection(); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().removeTemplateSelection();
} }
} }
@ -204,5 +226,40 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane {
widgets = size == 0 ? null : designer.getSelectionModel().getSelection().getSelectedWidgets(); widgets = size == 0 ? null : designer.getSelectionModel().getSelection().getSelectedWidgets();
} }
private void initSelectedArray() {
TreePath[] selectionPaths = ReportAndFSManagePane.getInstance().getRoleTree().getCheckBoxTreeSelectionModel().getSelectionPaths();
if (selectionPaths.length == 1) {
if (((ExpandMutableTreeNode) (selectionPaths[0].getLastPathComponent())).getChildCount() > 0) {
ExpandMutableTreeNode node = (ExpandMutableTreeNode) ((ExpandMutableTreeNode) (selectionPaths[0].getLastPathComponent())).getLastChild();
selectedArray = new String[node.getChildCount()];
for (int i = 0, len = node.getChildCount(); i < len; i++) {
ExpandMutableTreeNode treeNode = (ExpandMutableTreeNode) node.getChildAt(i);
String nodeName = treeNode.getUserObject().toString();
selectedArray[i] = nodeName;
}
} else {
selectedArray = pathToString(selectionPaths);
}
} else {
selectedArray = pathToString(selectionPaths);
}
}
private String[] pathToString(TreePath[] path) {
List<String> roles = new ArrayList<String>();
if (!ArrayUtils.isEmpty(path)) {
for (TreePath tempPath : path) {
String temp = tempPath.toString();
boolean exist = StringUtils.isNotEmpty(temp) && temp.startsWith("[") && temp.endsWith("]");
if (exist) {
temp = temp.substring(1, temp.length() - 1);
String[] selectedRoles = temp.split("," + StringUtils.BLANK);
String role = selectedRoles[2].trim();
roles.add(role);
}
}
}
return roles.toArray(new String[0]);
}
} }

Loading…
Cancel
Save