diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java index 543a2c3ca8..b88deffda7 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java @@ -1715,6 +1715,9 @@ public abstract class JTemplate> protected void setUpTheme4NewTemplate() { TemplateTheme theme = getUsingTemplateThemeConfig().cachedFetchTheme4NewTemplate(); + if (theme != null) { + theme = getUsingTemplateThemeConfig().createNewTheme(); + } TemplateThemeAttrMark themeAttrMark = template.getAttrMark(TemplateThemeAttrMark.XML_TAG); if (themeAttrMark == null) { themeAttrMark = new TemplateThemeAttrMark(); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java index b61cd97988..afb2671103 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java @@ -23,8 +23,10 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; +import java.awt.Graphics2D; import java.awt.Image; import java.awt.Rectangle; +import java.awt.RenderingHints; import java.awt.Window; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -104,7 +106,7 @@ public class TemplateThemeBlock extends JPanel { UILabel titleLabel = new UILabel(name); titleLabel.setToolTipText(name); - infoPane.add(titleLabel, BorderLayout.WEST); + infoPane.add(titleLabel, BorderLayout.CENTER); if (profilePane != null) { addProfileButton(infoPane); @@ -179,12 +181,14 @@ public class TemplateThemeBlock extends JPanel { @Override public void paint(Graphics g) { super.paint(g); + Graphics2D g2d = (Graphics2D) g; + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); if (template != null) { TemplateThemeConfig templateUsingConfig = template.getUsingTemplateThemeConfig(); TemplateTheme templateTheme = template.getTemplateTheme(); if (templateUsingConfig == this.config && StringUtils.equals(templateTheme.getName(), name)) { - theme4currentTemplateMarkIcon.paintIcon(this, g, 176, 0); + theme4currentTemplateMarkIcon.paintIcon(this, g, getWidth() - 25, 0); } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java index 81915c7708..18ccb9a02f 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java @@ -25,6 +25,7 @@ import com.fr.design.mainframe.theme.edit.ui.ColorListPane; import com.fr.design.mainframe.theme.edit.ui.LabelUtils; import com.fr.design.mainframe.theme.ui.BorderUtils; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import com.fr.transaction.CallBackAdaptor; import com.fr.transaction.Configurations; @@ -311,7 +312,11 @@ public abstract class TemplateThemeProfilePane extends } public void populateBean(T theme) { - this.theme = theme; + try { + this.theme = (T) theme.clone(); + } catch (CloneNotSupportedException e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } isPopulating = true; String name = theme.getName(); @@ -448,26 +453,7 @@ public abstract class TemplateThemeProfilePane extends confirmButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - T theme = updateBean(); - boolean canBeSaved = checkThemeCanBeSavedAndUpdateUI(true, nameTextField, nameErrorLabel, confirmButton); - if (canBeSaved && theme != null) { - theme.setName(nameTextField.getText()); - theme.setRemovable(true); - theme.setMutable(true); - Configurations.modify(new WorkerFacade(config.getClass()) { - @Override - public void run() { - config.addTheme(theme, true); - } - }.addCallBack(new CallBackAdaptor() { - @Override - public void afterCommit() { - super.afterCommit(); - exit(); - parent.exit(); - } - })); - } + saveAsNew(nameTextField.getText()); } }); @@ -531,8 +517,9 @@ public abstract class TemplateThemeProfilePane extends JPanel container = FRGUIPaneFactory.createBorderLayout_S_Pane(); JPanel nameTextPane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(20, 5); - nameTextPane.add(nameTextField); + nameTextPane.setBorder(BorderFactory.createEmptyBorder(20, 0, 0, 0)); nameTextPane.add(new UILabel(Toolkit.i18nText("Fine-Design_Template_Theme_Save_As_Pane_Name_Label"))); + nameTextPane.add(nameTextField); container.add(nameTextPane, BorderLayout.CENTER); container.add(nameErrorLabel, BorderLayout.SOUTH); @@ -540,6 +527,36 @@ public abstract class TemplateThemeProfilePane extends return container; } + private void saveAsNew(String name) { + T newThemeObject = null; + try { + newThemeObject = (T) updateBean().clone(); + } catch (CloneNotSupportedException ex) { + FineLoggerFactory.getLogger().error(ex.getMessage(), ex); + return; + } + boolean canBeSaved = checkThemeCanBeSavedAndUpdateUI(true, nameTextField, nameErrorLabel, confirmButton); + if (canBeSaved && newThemeObject != null) { + newThemeObject.setName(name); + newThemeObject.setRemovable(true); + newThemeObject.setMutable(true); + T finalNewThemeObject = newThemeObject; + Configurations.modify(new WorkerFacade(config.getClass()) { + @Override + public void run() { + config.addTheme(finalNewThemeObject, true); + } + }.addCallBack(new CallBackAdaptor() { + @Override + public void afterCommit() { + super.afterCommit(); + exit(); + parent.exit(); + } + })); + } + } + public void exit() { this.dispose(); }