diff --git a/designer-realize/src/main/java/com/fr/design/actions/server/StyleListAction.java b/designer-realize/src/main/java/com/fr/design/actions/server/StyleListAction.java index 4f57bdc2a..ff16a3363 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/server/StyleListAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/server/StyleListAction.java @@ -40,10 +40,13 @@ public class StyleListAction extends UpdateAction { public void actionPerformed(ActionEvent evt) { DesignerFrame designerFrame = DesignerContext.getDesignerFrame(); final StyleManagerPane styleListPane = new StyleManagerPane(); - BasicDialog styleListDialog = styleListPane.showWindow(designerFrame); + final BasicDialog styleListDialog = styleListPane.showWindow(designerFrame); styleListDialog.addDialogActionListener(new DialogActionAdapter() { @Override public void doOk() { + if (!styleListPane.isNamePermitted()) { + styleListDialog.setDoOKSucceed(false); + } Configurations.modify(new WorkerFacade(ServerPreferenceConfig.class) { @Override public void run() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/server/StyleManagerPane.java b/designer-realize/src/main/java/com/fr/design/actions/server/StyleManagerPane.java index 37e62cb70..51ca8a7d1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/server/StyleManagerPane.java +++ b/designer-realize/src/main/java/com/fr/design/actions/server/StyleManagerPane.java @@ -34,4 +34,8 @@ public class StyleManagerPane extends BasicPane { public void update(ServerPreferenceConfig configManager) { this.styleArrayPane.update(configManager); } + + public boolean isNamePermitted() { + return styleArrayPane.isNamePermitted(); + } } diff --git a/designer-realize/src/main/java/com/fr/design/present/StyleArrayPane.java b/designer-realize/src/main/java/com/fr/design/present/StyleArrayPane.java index 76c1e7261..81eda0e7a 100644 --- a/designer-realize/src/main/java/com/fr/design/present/StyleArrayPane.java +++ b/designer-realize/src/main/java/com/fr/design/present/StyleArrayPane.java @@ -3,26 +3,31 @@ package com.fr.design.present; import com.fr.base.Style; import com.fr.config.ServerPreferenceConfig; import com.fr.config.StyleMap; +import com.fr.design.dialog.FineJOptionPane; import com.fr.design.gui.controlpane.AbstractNameableCreator; import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.UnrepeatedNameHelper; import com.fr.design.gui.ilist.ListModelElement; import com.fr.design.gui.ilist.ModNameActionListener; -import com.fr.design.mainframe.DesignerContext; +import com.fr.design.i18n.Toolkit; import com.fr.design.style.StylePane; +import com.fr.general.ComparatorUtils; import com.fr.general.NameObject; import com.fr.stable.Nameable; -import com.fr.transaction.Configurations; -import com.fr.transaction.WorkerAdaptor; +import com.fr.stable.StringUtils; +import javax.swing.*; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; public class StyleArrayPane extends JListControlPane { - + + private boolean namePermitted = true; + /** * Constructor. */ @@ -30,11 +35,37 @@ public class StyleArrayPane extends JListControlPane { super(); this.addModNameActionListener(new ModNameActionListener() { public void nameModed(int index, String oldName, String newName) { + if (ComparatorUtils.equals(oldName, newName)) { + return; + } + namePermitted = true; + String[] allNames = nameableList.getAllNames(); + allNames[index] = StringUtils.EMPTY; + if (StringUtils.isEmpty(newName)) { + showTipDialogAndReset(Toolkit.i18nText("Fine-Design_Basic_Predefined_Style_Empty_Name"), index); + return; + } + if (isNameRepeated(new List[] {Arrays.asList(allNames)}, newName)) { + showTipDialogAndReset(Toolkit.i18nText("Fine-Design_Basic_Predefined_Style_Duplicate_Name", newName), index); + return; + } populateSelectedValue(); } }); } + + private void showTipDialogAndReset(String content, int index) { + nameableList.stopEditing(); + + FineJOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(StyleArrayPane.this), + content, + Toolkit.i18nText("Fine-Design_Basic_Alert"), + JOptionPane.WARNING_MESSAGE); + setIllegalIndex(index); + namePermitted = false; + } + /** * 创建样式设置组件 * @@ -105,4 +136,8 @@ public class StyleArrayPane extends JListControlPane { configManager.setStyleMap(styleMap); } + + public boolean isNamePermitted() { + return namePermitted; + } }