diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/CRPropertyDescriptorPane.java b/designer-form/src/main/java/com/fr/design/designer/creator/CRPropertyDescriptorPane.java index be4a81d4ec..ca7933e03a 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/CRPropertyDescriptorPane.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/CRPropertyDescriptorPane.java @@ -6,15 +6,18 @@ import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.xtable.TableUtils; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.widget.editors.ExtendedPropertyEditor; import com.fr.design.mainframe.widget.editors.StringEditor; import com.fr.form.ui.Widget; import com.fr.general.ComparatorUtils; +import com.fr.general.IOUtils; import com.fr.log.FineLoggerFactory; import javax.swing.BorderFactory; +import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.Component; import java.beans.PropertyChangeEvent; @@ -136,12 +139,37 @@ public class CRPropertyDescriptorPane { try { Object value = propertyEditor.getValue(); Method m = crPropertyDescriptor.getWriteMethod(); + if (ComparatorUtils.equals(m.getName(), "setWidgetName")) { + if (!isWidgetNameValid(value, widget)) { + value = widget.getWidgetName(); + } + } m.invoke(widget, value); - crPropertyDescriptor.firePropertyChanged(); } catch (Exception e) { } } + /** + * 设置控件名之前校验一下,不能为空,不能重名 + */ + private boolean isWidgetNameValid(Object value, Widget widget) { + String toSetWidgetName; + if (value != null) { + toSetWidgetName = value.toString(); + } else { + return false; + } + String currentWidgetName = widget.getWidgetName(); + boolean exist = designer.getTarget().isNameExist(toSetWidgetName) && !ComparatorUtils.equals(toSetWidgetName, currentWidgetName); + if (toSetWidgetName.isEmpty()) { + return false; + } else if (exist) { + //控件重名,弹出提示 + JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Rename_Failure"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Joption_News"), JOptionPane.ERROR_MESSAGE, IOUtils.readIcon("com/fr/design/form/images/joption_failure.png")); + return false; + } + return true; + } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java index 5e57557e7f..8267c53b8c 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java @@ -42,7 +42,6 @@ import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.BorderLayout; - /** * Created by ibm on 2017/7/25. */ @@ -219,7 +218,10 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { String toSetWidgetName = widgetNameField.getText(); String currentWidgetName = widget.getWidgetName(); boolean exist = designer.getTarget().isNameExist(toSetWidgetName) && !ComparatorUtils.equals(toSetWidgetName, currentWidgetName); - if (exist) { + if (toSetWidgetName.isEmpty()) { + widgetNameField.setText(currentWidgetName); + return; + } else if (exist) { widgetNameField.setText(currentWidgetName); JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Rename_Failure"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Joption_News"), JOptionPane.ERROR_MESSAGE, IOUtils.readIcon("com/fr/design/form/images/joption_failure.png")); return;