diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButtonGroup.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButtonGroup.java index 34a7a0012..cbebaf9d8 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButtonGroup.java +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButtonGroup.java @@ -3,6 +3,8 @@ package com.fr.design.gui.ibutton; import com.fr.design.constants.UIConstants; import com.fr.design.event.GlobalNameListener; import com.fr.design.event.GlobalNameObserver; +import com.fr.design.event.UIObserver; +import com.fr.design.event.UIObserverListener; import com.fr.design.utils.gui.UIComponentUtils; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; @@ -24,7 +26,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -public class UIButtonGroup extends JPanel implements GlobalNameObserver { +public class UIButtonGroup extends JPanel implements GlobalNameObserver, UIObserver { private static final long serialVersionUID = 1L; private static final int TEXT_LENGTH = 3; private static final int BUTTON_SIZE = 2; @@ -37,6 +39,7 @@ public class UIButtonGroup extends JPanel implements GlobalNameObserver { private boolean isToolBarComponent = false; private boolean isClick; + private UIObserverListener uiObserverListener; private boolean autoFireStateChanged = true; public UIButtonGroup(String[] textArray) { @@ -326,6 +329,9 @@ public class UIButtonGroup extends JPanel implements GlobalNameObserver { ((ChangeListener) listeners[i + 1]).stateChanged(e); } } + if (uiObserverListener != null) { + uiObserverListener.doChange(); + } } /** @@ -368,6 +374,16 @@ public class UIButtonGroup extends JPanel implements GlobalNameObserver { return true; } + @Override + public void registerChangeListener(UIObserverListener listener) { + this.uiObserverListener = listener; + } + + @Override + public boolean shouldResponseChangeListener() { + return true; + } + /** * @param l diff --git a/designer-base/src/main/java/com/fr/design/javascript/ExportJavaScriptPane.java b/designer-base/src/main/java/com/fr/design/javascript/ExportJavaScriptPane.java index b559c22e6..48c18eb69 100644 --- a/designer-base/src/main/java/com/fr/design/javascript/ExportJavaScriptPane.java +++ b/designer-base/src/main/java/com/fr/design/javascript/ExportJavaScriptPane.java @@ -218,6 +218,10 @@ public class ExportJavaScriptPane extends AbstractHyperLinkPane { + if (e.getStateChange() == ItemEvent.SELECTED) { + final int row = table.getSelectedRow(); + if (row == -1) { + return; + } + SingleJavaScript js = getList().get(row); + Object ob = fileNameComboBox.getSelectedItem(); + if (ob != null) { + String value = ob.toString(); + js.setDefaultFileName(StringUtils.equals(value, DEFAULT)); + if (js.isDefaultFileName()) { + js.setFileName(StringUtils.EMPTY); + } + } + table.repaint(); + } + }); this.addCellEditorListener(new CellEditorListener() { @Override @@ -458,15 +482,6 @@ public class ExportJavaScriptPane extends AbstractHyperLinkPane(Arrays.asList(providers))); } return paraButton; } @@ -758,6 +777,7 @@ public class ExportJavaScriptPane extends AbstractHyperLinkPane -270) { + angle += 2 * 360; + } + } + }); + } + + public void start() { + angle = START_ANGLE; + timer.start(); + } + + public void stop() { + timer.stop(); + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + Graphics2D g2 = (Graphics2D) g; + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + + Composite oldComposite = g2.getComposite(); + Stroke oldStroke = g2.getStroke(); + + g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); + + int d = Math.min(getWidth(), getHeight()); + int r = d / 2; + Point circlePoint = new Point(getWidth() / 2, getHeight() / 2); + + g2.setColor(Color.WHITE); + g2.fillOval(circlePoint.x - r, circlePoint.y - r, d, d); + + g2.setColor(Color.BLACK); + int waitCircleD = d / 10; + int waitCircleR = waitCircleD / 2; + + g2.fillOval(circlePoint.x - r / 3 - waitCircleR, circlePoint.y - waitCircleR, waitCircleD, waitCircleD); + g2.fillOval(circlePoint.x - waitCircleR, circlePoint.y - waitCircleR, waitCircleD, waitCircleD); + g2.fillOval(circlePoint.x + r / 3 - waitCircleR, circlePoint.y - waitCircleR, waitCircleD, waitCircleD); + + + g2.setStroke(STROKE); + g2.setColor(Color.decode("#419BF9")); + + int lineWidth = (int) STROKE.getLineWidth(); + g2.drawArc(circlePoint.x - r + lineWidth / 2 , circlePoint.y - r + lineWidth / 2, d - lineWidth, d - lineWidth, angle, -90); + + g2.setStroke(oldStroke); + g2.setComposite(oldComposite); + } +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/guide/ui/GuideManageDialog.java b/designer-base/src/main/java/com/fr/design/mainframe/guide/ui/GuideManageDialog.java index 98ea4c3c6..ca53613c4 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/guide/ui/GuideManageDialog.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/guide/ui/GuideManageDialog.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.guide.ui; +import com.fr.base.svg.IconUtils; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; @@ -14,7 +15,6 @@ import com.fr.design.mainframe.guide.base.GuideManager; import com.fr.design.mainframe.guide.base.GuideVersion; import com.fr.design.mainframe.guide.collect.GuideCollector; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.IOUtils; import javax.swing.BorderFactory; import javax.swing.Icon; @@ -31,9 +31,9 @@ import java.awt.event.ActionListener; public class GuideManageDialog extends JDialog { private static final int DEFAULT_HEIGHT = 400; private static final int DEFAULT_WIDTH = 600; - private static final Icon GROUP_COMPLETE_NONE = IOUtils.readIcon("/com/fr/design/mainframe/guide/complete_none.png"); - private static final Icon GROUP_COMPLETE_SOME = IOUtils.readIcon("/com/fr/design/mainframe/guide/complete_some.png"); - private static final Icon GROUP_COMPLETE_ALL = IOUtils.readIcon("/com/fr/design/mainframe/guide/complete_all.png"); + private static final Icon GROUP_COMPLETE_NONE = IconUtils.readIcon("/com/fr/design/mainframe/guide/complete_none.svg"); + private static final Icon GROUP_COMPLETE_SOME = IconUtils.readIcon("/com/fr/design/mainframe/guide/complete_some.svg"); + private static final Icon GROUP_COMPLETE_ALL = IconUtils.readIcon("/com/fr/design/mainframe/guide/complete_all.svg"); private static final Color BORDER_COLOR = new Color(224, 224, 225); private static final Color UNCOMPLETE_FONT_COLOR = new Color(51, 51, 52); private static final Color COMPLETE_FONT_COLOR = new Color(51,51,52,128); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/guide/ui/ImagePanel.java b/designer-base/src/main/java/com/fr/design/mainframe/guide/ui/ImagePanel.java deleted file mode 100644 index deaf97417..000000000 --- a/designer-base/src/main/java/com/fr/design/mainframe/guide/ui/ImagePanel.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.fr.design.mainframe.guide.ui; - -import javax.swing.JPanel; -import java.awt.Graphics; -import java.awt.Image; -import java.awt.Toolkit; - -/** - * Created by kerry on 2020-10-23 - */ -public class ImagePanel extends JPanel { - - - private Image image; - - public ImagePanel(String imagePath) { - image = Toolkit.getDefaultToolkit().createImage(ImagePanel.class - .getResource(imagePath)); - } - - @Override - public void paintComponent(Graphics g) { - super.paintComponent(g); - if (image != null) { - g.drawImage(image, 0, 0, getWidth(), getHeight(), this); - } - } -} 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 4fc65badb..bc787bb18 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 @@ -141,6 +141,7 @@ public abstract class TemplateThemeProfilePane extends if (saveAsButton != null) { saveAsButton.setEnabled(StringUtils.isNotEmpty(name)); } + actionListener.onInitialize(theme); isPopulating = false; } @@ -218,6 +219,7 @@ public abstract class TemplateThemeProfilePane extends super.afterCommit(); saveButton.setEnabled(false); saveAsButton.setEnabled(true); + actionListener.onSaved(config.cachedFetch(getName())); DesignerToastMsgUtil.toastPrompt(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Profile_Pane_Save_Successfully")); } }); @@ -342,11 +344,21 @@ public abstract class TemplateThemeProfilePane extends } public interface TemplateThemeProfileActionListener { + void onInitialize(TemplateTheme theme); + void onThemeNameChecked(String name, boolean valid); + + void onSaved(TemplateTheme theme); } public static class TemplateThemeProfileActionAdapter implements TemplateThemeProfileActionListener { + @Override + public void onInitialize(TemplateTheme theme) {} + @Override public void onThemeNameChecked(String name, boolean valid) { } + + @Override + public void onSaved(TemplateTheme theme) {} } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/style/color/ColorFactory.java b/designer-base/src/main/java/com/fr/design/style/color/ColorFactory.java index b643752b3..0ab0d8f38 100644 --- a/designer-base/src/main/java/com/fr/design/style/color/ColorFactory.java +++ b/designer-base/src/main/java/com/fr/design/style/color/ColorFactory.java @@ -3,7 +3,7 @@ package com.fr.design.style.color; import java.awt.Color; public interface ColorFactory { - + public static final Color MenuColors[] = { Color.black, new Color(153, 51, 0), @@ -72,17 +72,17 @@ public interface ColorFactory { }; public static final Color STANDARD_COLORS[] = { - new Color(166, 89, 66), - new Color(166, 123, 66), - new Color(166, 66, 66), - new Color(103, 166, 66), - new Color(66, 121, 166), - new Color(68, 66, 166), - new Color(98, 66, 166), - new Color(146, 66, 166), - new Color(75, 18, 89), - new Color(89, 18, 51) + new Color(234, 68, 49), + new Color(179, 96, 36), + new Color(232, 147, 37), + new Color(109, 214, 50), + new Color(51, 147, 219), + new Color(56, 54, 179), + new Color(93, 54, 179), + new Color(154, 54, 179), + new Color(127, 76, 217), + new Color(179, 36, 102) }; - -} \ No newline at end of file + +} diff --git a/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_all.png b/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_all.png deleted file mode 100644 index c696cba4d..000000000 Binary files a/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_all.png and /dev/null differ diff --git a/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_all.svg b/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_all.svg new file mode 100644 index 000000000..f18c15802 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_all.svg @@ -0,0 +1,13 @@ + + + 全部完成 + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_none.png b/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_none.png deleted file mode 100644 index 4c6c6f2bb..000000000 Binary files a/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_none.png and /dev/null differ diff --git a/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_none.svg b/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_none.svg new file mode 100644 index 000000000..ec078243b --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_none.svg @@ -0,0 +1,13 @@ + + + 未完成@2x + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_some.png b/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_some.png deleted file mode 100644 index b3443318b..000000000 Binary files a/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_some.png and /dev/null differ diff --git a/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_some.svg b/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_some.svg new file mode 100644 index 000000000..e6151ea03 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/mainframe/guide/complete_some.svg @@ -0,0 +1,23 @@ + + + 部分完成 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRFixLayoutAdapter.java b/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRFixLayoutAdapter.java index d649c5e30..7fe0f5d7a 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRFixLayoutAdapter.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRFixLayoutAdapter.java @@ -110,7 +110,8 @@ public class FRFixLayoutAdapter extends AbstractLayoutAdapter { @Override public boolean accept(XCreator creator, int x, int y) { - return true; + Component component = container.getComponentAt(x, y); + return component != container; } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/action/CreateComponentAction.java b/designer-form/src/main/java/com/fr/design/mainframe/share/action/CreateComponentAction.java index 476afe8b6..364588813 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/action/CreateComponentAction.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/action/CreateComponentAction.java @@ -81,6 +81,9 @@ import static javax.swing.JOptionPane.ERROR_MESSAGE; * 创建组件事件 */ public class CreateComponentAction extends UpdateAction { + private static final double MAX_WIDTH = 960.0; + private static final double MAX_HEIGHT = 540.0; + ShareUIAspect aspect; /** * 等待时间 500 ms. @@ -114,8 +117,12 @@ public class CreateComponentAction extends UpdateAction { // 获取选中的组件 Triple sharedTriple = ComponentTransformerFactory.getInstance().transform(selection); if (sharedTriple == null) { - FineJOptionPane.showMessageDialog(designerFrame, Toolkit.i18nText("Fine-Design_Share_Select_Error_Tip"), - Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), ERROR_MESSAGE, IOUtils.readIcon("/com/fr/base/images/share/Information_Icon_warning_normal_32x32.png")); + showErrMsgDialog(Toolkit.i18nText("Fine-Design_Share_Select_Error_Tip")); + return; + } + + if (isBeyondMaxSize(sharedTriple.getRight())) { + showErrMsgDialog(Toolkit.i18nText("Fine-Design_Share_Widget_Size_Error_Tip")); return; } @@ -398,4 +405,20 @@ public class CreateComponentAction extends UpdateAction { } return paras; } + + private boolean isBeyondMaxSize(Rectangle rec) { + double width = rec.getWidth(); + double height = rec.getHeight(); + return width > 0 && height > 0 && (width > MAX_WIDTH || height > MAX_HEIGHT); + } + + private void showErrMsgDialog(String err) { + FineJOptionPane.showMessageDialog( + DesignerContext.getDesignerFrame(), + err, + Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), + ERROR_MESSAGE, + IOUtils.readIcon("/com/fr/base/images/share/Information_Icon_warning_normal_32x32.png") + ); + } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/DownloadSuitableThemeAction.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/DownloadSuitableThemeAction.java index 399a644b4..f8f4cc1a7 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/DownloadSuitableThemeAction.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/DownloadSuitableThemeAction.java @@ -10,6 +10,7 @@ import com.fr.design.dialog.FineJOptionPane; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.gui.imenu.UIMenuItemUI; +import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.i18n.Toolkit; import com.fr.design.login.DesignerLoginHelper; import com.fr.design.login.DesignerLoginSource; @@ -39,22 +40,35 @@ import java.util.concurrent.ExecutionException; */ public class DownloadSuitableThemeAction extends UpdateAction { private final String themePath; + private final UIPopupMenu popupMenu; private boolean downloading = false; private JTemplate currentTemplate; - public DownloadSuitableThemeAction(String themePath) { + public DownloadSuitableThemeAction(String themePath, UIPopupMenu popupMenu) { this.themePath = themePath; + this.popupMenu = popupMenu; this.putValue(Action.SMALL_ICON, null); this.setName(Toolkit.i18nText("Fine-Design_Share_Download_Suitable_Theme")); } @Override public UIMenuItem createMenuItem() { - UIMenuItem menuItem = super.createMenuItem(); - menuItem.setOpaque(true); - menuItem.setBackground(ColorConstants.BACKGROUND); - menuItem.setUI(new SharedComponentActionMenuItemUI()); - return menuItem; + return getLoadingMenuItem(); + } + + public LoadingMenuItem getLoadingMenuItem() { + Object object = this.getValue(LoadingMenuItem.class.getName()); + if (object == null) { + UIMenuItem menuItem = new LoadingMenuItem(this); + // 设置名字用作单元测 + menuItem.setName(getName()); + setPressedIcon4Button(menuItem); + setDisabledIcon4Button(menuItem); + object = menuItem; + + this.putValue(LoadingMenuItem.class.getName(), object); + } + return (LoadingMenuItem) object; } @Override @@ -91,6 +105,8 @@ public class DownloadSuitableThemeAction extends UpdateAction { } downloading = true; + LoadingMenuItem menuItem = getLoadingMenuItem(); + menuItem.startLoading(); new SwingWorker() { @Override @@ -109,11 +125,14 @@ public class DownloadSuitableThemeAction extends UpdateAction { onThemeFetched(theme); downloading = false; + LoadingMenuItem menuItem = getLoadingMenuItem(); + menuItem.stopLoading(); } }.execute(); } public void onThemeFetched(FormTheme theme) { + popupMenu.menuSelectionChanged(false); if (theme == null) { return; } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/LoadingMenuItem.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/LoadingMenuItem.java new file mode 100644 index 000000000..883a30644 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/LoadingMenuItem.java @@ -0,0 +1,54 @@ +package com.fr.design.mainframe.share.ui.actions; + +import com.fr.design.gui.imenu.UIMenuItem; +import com.fr.design.mainframe.share.ui.constants.ColorConstants; +import com.fr.general.IOUtils; + +import javax.swing.Action; +import javax.swing.BorderFactory; +import javax.swing.Icon; +import java.awt.Graphics; + +/** + * @author Starryi + * @version 1.0 + * Created by Starryi on 2021/10/19 + */ +public class LoadingMenuItem extends UIMenuItem { + private boolean loading = false; + + private final Icon profileIcon = IOUtils.readIcon("/com/fr/design/form/images/loading.gif"); + + public LoadingMenuItem(Action action) { + super(action); + setOpaque(true); + setBackground(ColorConstants.BACKGROUND); + setUI(new SharedComponentActionMenuItemUI()); + } + + public void startLoading() { + loading = true; + setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); + revalidate(); + repaint(); + } + + public void stopLoading() { + loading = false; + setBorder(BorderFactory.createEmptyBorder()); + revalidate(); + repaint(); + } + + public boolean isLoading() { + return loading; + } + + @Override + protected void paintBorder(Graphics g) { + super.paintBorder(g); + if (loading) { + profileIcon.paintIcon(this, g, getWidth() - 20, 0); + } + } +} diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/SharedComponentActionMenuItemUI.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/SharedComponentActionMenuItemUI.java index ca4d499b1..a400ccf37 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/SharedComponentActionMenuItemUI.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/SharedComponentActionMenuItemUI.java @@ -2,14 +2,18 @@ package com.fr.design.mainframe.share.ui.actions; import com.fr.design.constants.UIConstants; import com.fr.design.gui.imenu.UIMenuItemUI; +import com.fr.design.gui.imenu.UIPopupMenu; +import com.fr.design.mainframe.share.ui.constants.ColorConstants; import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.stable.Constants; import javax.swing.ButtonModel; import javax.swing.JMenu; import javax.swing.JMenuItem; -import javax.swing.JPopupMenu; +import javax.swing.MenuSelectionManager; import java.awt.Color; +import java.awt.Component; +import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; @@ -27,7 +31,7 @@ public class SharedComponentActionMenuItemUI extends UIMenuItemUI { int menuWidth = menuItem.getWidth(); int menuHeight = menuItem.getHeight(); - g.setColor(UIConstants.NORMAL_BACKGROUND); + g.setColor(ColorConstants.BACKGROUND); g.fillRect(0, 0, menuWidth, menuHeight); if (menuItem.isOpaque()) { if (model.isArmed() || (menuItem instanceof JMenu && model.isSelected())) { @@ -36,9 +40,36 @@ public class SharedComponentActionMenuItemUI extends UIMenuItemUI { GUIPaintUtils.fillPaint((Graphics2D) g, 0, 0, menuWidth, menuHeight, true, Constants.NULL, menuItem.getBackground(), 7); } g.setColor(oldColor); - } else if (model.isArmed() || (menuItem instanceof JMenu && model.isSelected())) { + } else if (model.isArmed() || (menuItem instanceof JMenu && + model.isSelected())) { GUIPaintUtils.fillPaint((Graphics2D) g, 0, 0, menuWidth, menuHeight, true, Constants.NULL, UIConstants.FLESH_BLUE, 7); g.setColor(oldColor); } } + + @Override + protected void doClick(MenuSelectionManager msm) { + if (hasLoadingMenuItem()) { + return; + } + + if (menuItem instanceof LoadingMenuItem) { + menuItem.doClick(0); + } else { + super.doClick(msm); + } + } + + private boolean hasLoadingMenuItem() { + Container parent = menuItem.getParent(); + if (parent instanceof UIPopupMenu) { + Component[] components = parent.getComponents(); + for (Component component: components) { + if (component instanceof LoadingMenuItem && ((LoadingMenuItem) component).isLoading()) { + return true; + } + } + } + return false; + } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/AbstractOnlineWidgetBlock.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/AbstractOnlineWidgetBlock.java index 5ce5b57dd..3be4f96b9 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/AbstractOnlineWidgetBlock.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/AbstractOnlineWidgetBlock.java @@ -116,12 +116,13 @@ public abstract class AbstractOnlineWidgetBlock extends PreviewWidgetBlock) jForm); @@ -291,15 +291,6 @@ public class NewFormPane extends BasicPane { } } - private Form initEmptyBodyForm() { - WFitLayout body = new WFitLayout("body"); - body.setContainerWidth(WBorderLayout.DEFAULT_WIDTH); - body.setContainerHeight(WBorderLayout.DEFAULT_HEIGHT); - WBorderLayout borderLayout = new WBorderLayout("form"); - borderLayout.addCenter(body); - return new Form(borderLayout); - } - /** * 通过布局文件的位置初始化Form对象的布局信息 * diff --git a/designer-form/src/main/resources/com/fr/design/form/images/loading.gif b/designer-form/src/main/resources/com/fr/design/form/images/loading.gif new file mode 100644 index 000000000..a3c061b0f Binary files /dev/null and b/designer-form/src/main/resources/com/fr/design/form/images/loading.gif differ diff --git a/designer-form/src/main/resources/com/fr/design/form/layouts/templates/5-7/2.frm b/designer-form/src/main/resources/com/fr/design/form/layouts/templates/5-7/2.frm index e7f9d76d0..17a624d7d 100644 --- a/designer-form/src/main/resources/com/fr/design/form/layouts/templates/5-7/2.frm +++ b/designer-form/src/main/resources/com/fr/design/form/layouts/templates/5-7/2.frm @@ -59,50 +59,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/designer-form/src/main/resources/com/fr/design/form/layouts/templates/multi/4.frm b/designer-form/src/main/resources/com/fr/design/form/layouts/templates/multi/4.frm index 21eac8ae6..c18a36d26 100644 --- a/designer-form/src/main/resources/com/fr/design/form/layouts/templates/multi/4.frm +++ b/designer-form/src/main/resources/com/fr/design/form/layouts/templates/multi/4.frm @@ -59,96 +59,105 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + - - - - + + + + + diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java b/designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java index 286890303..972df0cc8 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java @@ -4,6 +4,7 @@ import com.fr.base.Parameter; import com.fr.base.chart.exception.ChartNotFoundException; import com.fr.base.io.XMLEncryptUtils; import com.fr.design.DesignerEnvManager; +import com.fr.design.fit.NewJForm; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.AbstractAppProvider; import com.fr.design.mainframe.BaseJForm; @@ -19,6 +20,7 @@ import com.fr.exception.TplLockedException; import com.fr.file.FILE; import com.fr.form.main.Form; import com.fr.form.ui.container.WBorderLayout; +import com.fr.form.ui.container.WFitLayout; import com.fr.general.ComparatorUtils; import com.fr.log.FineLoggerFactory; import com.fr.report.util.ReadXmlType; @@ -58,36 +60,31 @@ class FormApp extends AbstractAppProvider { * @return */ private JTemplate compatibleForm(FILE tplFile, HashMap classType) { - if (ComparatorUtils.equals(StableFactory.getRegisteredClass(BaseJForm.XML_TAG), JForm.class)) { - classType.put(Constants.ARG_2, Parameter[].class); - JForm emptyForm = new JForm(new Form(new WBorderLayout("form")), tplFile); - OpenWorker> worker = new OpenWorker<>( - new Callable>() { - @Override - public OpenResult call() throws Exception { - Form form = getForm(tplFile); - return new OpenResult<>(form, form.getParameters()); - } - }, emptyForm); - worker.addCallBack(new Callable>() { - @Override - public JTemplate call() throws Exception { - OpenResult result = worker.getResult(); - return (JTemplate) StableFactory.getMarkedInstanceObjectFromClass(BaseJForm.XML_TAG, - new Object[]{result.getBaseBook(), tplFile, result.getRef()}, classType, BaseJForm.class); - } - }); - worker.start(tplFile.getPath()); - OpenResult result = worker.getResult(); - if (result != null) { + classType.put(Constants.ARG_2, Parameter[].class); + NewJForm emptyForm = new NewJForm(Form.getEmptyBodyForm(), tplFile); + OpenWorker> worker = new OpenWorker<>( + new Callable>() { + @Override + public OpenResult call() throws Exception { + Form form = getForm(tplFile); + return new OpenResult<>(form, form.getParameters()); + } + }, emptyForm); + worker.addCallBack(new Callable>() { + @Override + public JTemplate call() throws Exception { + OpenResult result = worker.getResult(); return (JTemplate) StableFactory.getMarkedInstanceObjectFromClass(BaseJForm.XML_TAG, - new Object[]{result.getBaseBook(), tplFile, new Parameter[0]}, classType, BaseJForm.class); + new Object[]{result.getBaseBook(), tplFile, result.getRef()}, classType, BaseJForm.class); } - return emptyForm; - } else { + }); + worker.start(tplFile.getPath()); + OpenResult result = worker.getResult(); + if (result != null) { return (JTemplate) StableFactory.getMarkedInstanceObjectFromClass(BaseJForm.XML_TAG, - new Object[]{getForm(tplFile), tplFile}, classType, BaseJForm.class); + new Object[]{result.getBaseBook(), tplFile, new Parameter[0]}, classType, BaseJForm.class); } + return emptyForm; } @Nullable diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java index 864459276..39c6b5574 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java @@ -31,6 +31,7 @@ import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JOptionPane; import javax.swing.JRootPane; +import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import javax.swing.UIManager; import java.awt.BorderLayout; @@ -231,7 +232,7 @@ public class GuideCreateUtils { int returnVal = FineJOptionPane.showConfirmDialog( DesignerContext.getDesignerFrame(), Toolkit.i18nText("Fine-Design_Guide_Option_Confirm_Not_Login"), - Toolkit.i18nText("Fine-Design_Basic_Confirm"), + Toolkit.i18nText("Fine-Design_Basic_Alert"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (returnVal == JOptionPane.YES_OPTION) { @@ -243,16 +244,16 @@ public class GuideCreateUtils { FineJOptionPane.showMessageDialog( DesignerContext.getDesignerFrame(), Toolkit.i18nText("Fine-Design_Guide_Option_Warning_Need_Network"), - Toolkit.i18nText("Fine-Design_Basic_Confirm"), + Toolkit.i18nText("Fine-Design_Basic_Alert"), JOptionPane.WARNING_MESSAGE); } public static void showNoFileAuthAlert() { FineJOptionPane.showMessageDialog( DesignerContext.getDesignerFrame(), - Toolkit.i18nText("Fine-Design_Basic_Warning_Template_Do_Not_Exsit"), - Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), - JOptionPane.INFORMATION_MESSAGE + Toolkit.i18nText("Fine-Design_Guide_Option_Warning_No_Directory_Auth"), + Toolkit.i18nText("Fine-Design_Basic_Alert"), + JOptionPane.WARNING_MESSAGE ); } @@ -292,4 +293,14 @@ public class GuideCreateUtils { return dialog; } + public static JScrollPane getParentScrollPane(Component component) { + if (component.getParent() == null) { + return null; + } + if (component.getParent() instanceof JScrollPane) { + return (JScrollPane) component.getParent(); + } + return getParentScrollPane(component.getParent()); + } + } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/ChangeLayoutComponentGuide.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/ChangeLayoutComponentGuide.java index 6bf82065f..2058bf958 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/ChangeLayoutComponentGuide.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/ChangeLayoutComponentGuide.java @@ -35,10 +35,9 @@ public class ChangeLayoutComponentGuide { public static Guide createGuide() { GuideScene scene = createScene(); scene.nextScene(createScene2()) - .nextScene(createScene3()) .nextScene(GuideSceneHelper.createFormDesignerBodyDisplayScene()) - .nextScene(createScene4()) - .nextScene(createScene5()); + .nextScene(createScene3()) + .nextScene(createScene4()); Guide guide = GuideBuilder.newInstance() .setID(GuideIds.Guide.F001002) @@ -83,21 +82,6 @@ public class ChangeLayoutComponentGuide { } private static GuideScene createScene2() { - DisplayScene scene = new DisplayScene(); - scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { - @Override - public boolean prepared() { - scene.addCustomTarget( - GuideCreateUtils.createTarget(switchButton.getComponentPopupMenu()), - GuideCreateUtils.getRelativeBounds(switchButton.getComponentPopupMenu(), switchButton,0, -switchButton.getComponentPopupMenu().getHeight()) - ); - return true; - } - }); - return scene; - } - - private static GuideScene createScene3() { ClickScene scene = new ClickScene(); scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { @Override @@ -117,7 +101,7 @@ public class ChangeLayoutComponentGuide { return scene; } - private static GuideScene createScene4() { + private static GuideScene createScene3() { DragScene scene = new DragScene(); scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { @Override @@ -158,7 +142,7 @@ public class ChangeLayoutComponentGuide { return scene; } - private static GuideScene createScene5() { + private static GuideScene createScene4() { DisplayScene scene = new DisplayScene(); scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { @Override diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/UseLayoutAndComponentGuide.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/UseLayoutAndComponentGuide.java index 6d67f3b93..05f0d20be 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/UseLayoutAndComponentGuide.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/UseLayoutAndComponentGuide.java @@ -1,18 +1,24 @@ package com.fr.design.mainframe.guide.creator.layout; +import com.fr.base.theme.FormTheme; +import com.fr.base.theme.FormThemeConfig; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XOccupiedLayout; import com.fr.design.dialog.UIDialog; import com.fr.design.gui.imenu.UIHeadMenu; import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.FormWidgetDetailPane; +import com.fr.design.mainframe.JForm; +import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.NorthRegionContainerPane; import com.fr.design.mainframe.guide.GuideIds; import com.fr.design.mainframe.guide.base.Guide; import com.fr.design.mainframe.guide.base.GuideBuilder; import com.fr.design.mainframe.guide.base.GuideLifecycleAdaptor; +import com.fr.design.mainframe.guide.base.GuideManager; import com.fr.design.mainframe.guide.creator.GuideCreateUtils; import com.fr.design.mainframe.guide.creator.GuideSceneHelper; import com.fr.design.mainframe.guide.scene.ClickScene; @@ -24,6 +30,7 @@ import com.fr.design.mainframe.guide.tip.GuideTip; import com.fr.design.mainframe.share.ui.block.LocalWidgetBlock; import com.fr.design.mainframe.share.ui.local.LocalWidgetRepoPane; import com.fr.design.mainframe.share.util.InstallComponentHelper; +import com.fr.design.mainframe.theme.AsyncThemeFetcher; import com.fr.design.utils.ComponentUtils; import com.fr.design.widget.ui.designer.NewFormPane; import com.fr.design.widget.ui.designer.PredefinedLayoutPane; @@ -47,6 +54,7 @@ public class UseLayoutAndComponentGuide { private static final String RESOURCE_PATH = "/com/fr/report/guide/component"; private static UIHeadMenu fileHeadMenu; private static NewFormPane newFormPane; + private static String defaultThemeName; public static Guide createGuide() { GuideScene scene = createScene(); @@ -71,9 +79,25 @@ public class UseLayoutAndComponentGuide { @Override public boolean prepared() { preloadShareComponent(); - Component component = ComponentUtils.findComponentByName(NorthRegionContainerPane.getInstance(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_File")); - fileHeadMenu = ((UIHeadMenu) component); - return true; + List themeNames = FormThemeConfig.getInstance().getThemeNames(); + if (themeNames.size() > 0) { + defaultThemeName = themeNames.get(Math.max(themeNames.size() - 2, 0)); + AsyncThemeFetcher asyncThemeFetcher = new AsyncThemeFetcher<>(1, FormThemeConfig.getInstance()); + asyncThemeFetcher.submit(defaultThemeName, new AsyncThemeFetcher.AsyncThemeFetchCallbackAdapter(){ + @Override + public void afterCachedFetch(FormTheme theme) { + Component component = ComponentUtils.findComponentByName(NorthRegionContainerPane.getInstance(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_File")); + fileHeadMenu = ((UIHeadMenu) component); + asyncThemeFetcher.shutdown(); + EastRegionContainerPane.getInstance().showContainer(); + GuideManager.getInstance().getCurrentGuide().start(); + + } + }); + } else { + GuideManager.getInstance().getCurrentGuide().terminate(); + } + return false; } @Override @@ -134,7 +158,7 @@ public class UseLayoutAndComponentGuide { scene.showScene(); GuideCreateUtils.TIMER.purge(); } - }, 100); + }, 300); return false; } }); @@ -176,6 +200,15 @@ public class UseLayoutAndComponentGuide { public boolean onComplete() { newFormPane.createLayoutForm(); newFormPane.getWindow().dispose(); + FormTheme defaultTheme = FormThemeConfig.getInstance().cachedFetch(defaultThemeName); + if (defaultTheme != null) { + JTemplate newTemplate = DesignerContext.getDesignerFrame().getSelectedJTemplate(); + if (newTemplate instanceof JForm) { + JForm jForm = (JForm) newTemplate; + jForm.setTemplateTheme(defaultTheme); + } + + } return true; } }); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/DownloadComponentPackageGuide.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/DownloadComponentPackageGuide.java index 68de9ef8f..f5d8bf57f 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/DownloadComponentPackageGuide.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/DownloadComponentPackageGuide.java @@ -43,6 +43,7 @@ import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import java.awt.Component; +import java.awt.Dimension; import java.awt.Point; import java.awt.event.ContainerAdapter; import java.awt.event.ContainerEvent; @@ -62,7 +63,6 @@ public class DownloadComponentPackageGuide { .nextScene(createScene3()) .nextScene(createScene4()) .nextScene(createScene5()) - .nextScene(createScene6()) .nextScene(GuideSceneHelper.createFormDesignerBodyDisplayScene()); Guide guide = GuideBuilder.newInstance() @@ -93,12 +93,13 @@ public class DownloadComponentPackageGuide { } boolean loadWidgetSuccess = OnlineWidgetRepoPane.loadWidgets(); if (loadWidgetSuccess) { - filePath = GuideCreateUtils.openGuideFile("/com/fr/report/guide/template", "layout_recommend", ".frm"); + filePath = GuideCreateUtils.openGuideFile("/com/fr/report/guide/template", "download_theme", ".frm"); if (filePath == null) { GuideCreateUtils.showNoFileAuthAlert(); GuideManager.getInstance().getCurrentGuide().terminate(); return false; } + EastRegionContainerPane.getInstance().showContainer(); EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS); OnlineWidgetRepoPane onlineWidgetRepoPane = OnlineWidgetRepoPane.getInstance(); OnlineWidgetTabPane tabPane = (OnlineWidgetTabPane) ComponentUtils.findComponentByClass(onlineWidgetRepoPane, OnlineWidgetTabPane.class); @@ -189,7 +190,7 @@ public class DownloadComponentPackageGuide { if (onlineWidgetPackageBlock == null) { GuideManager.getInstance().getCurrentGuide().terminate(); } else { - JScrollPane scrollPane = getParentScrollPane(onlineWidgetPackageBlock); + JScrollPane scrollPane = GuideCreateUtils.getParentScrollPane(onlineWidgetPackageBlock); scrollPane.getVerticalScrollBar().setValue(onlineWidgetPackageBlock.getY()); SwingUtilities.invokeLater(new Runnable() { @Override @@ -207,24 +208,6 @@ public class DownloadComponentPackageGuide { } private static GuideScene createScene3() { - DisplayScene scene = new DisplayScene(); - scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { - @Override - public boolean prepared() { - scene.addTarget(onlineWidgetPackageBlock); - JPopupMenu popupMenu = onlineWidgetPackageBlock.getRightClickPopupMenu(); - Point location = getPopupMenuLocation(); - scene.addCustomTarget( - GuideCreateUtils.createTarget(popupMenu), - GuideCreateUtils.getRelativeBounds(popupMenu, onlineWidgetPackageBlock, location.x, location.y) - ); - return true; - } - }); - return scene; - } - - private static GuideScene createScene4() { ClickScene scene = new ClickScene(); scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { @Override @@ -260,7 +243,7 @@ public class DownloadComponentPackageGuide { return scene; } - private static GuideScene createScene5() { + private static GuideScene createScene4() { DisplayScene scene = new DisplayScene(); scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { @Override @@ -272,14 +255,14 @@ public class DownloadComponentPackageGuide { scene.showScene(); GuideCreateUtils.TIMER.purge(); } - }, 100); + }, 300); return false; } }); return scene; } - private static GuideScene createScene6() { + private static GuideScene createScene5() { ClickScene scene = new ClickScene(); scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { @Override @@ -305,7 +288,8 @@ public class DownloadComponentPackageGuide { private static Point getPopupMenuLocation() { JPopupMenu popupMenu = onlineWidgetPackageBlock.getRightClickPopupMenu(); - return new Point((onlineWidgetPackageBlock.getWidth() - popupMenu.getWidth()) / 2, (onlineWidgetPackageBlock.getHeight()- popupMenu.getHeight()) / 2); + Dimension preferredSize = popupMenu.getPreferredSize(); + return new Point((onlineWidgetPackageBlock.getWidth() - preferredSize.width) / 2, (onlineWidgetPackageBlock.getHeight()- preferredSize.height) / 2); } private static void closeConfirmDialog() { @@ -313,15 +297,4 @@ public class DownloadComponentPackageGuide { themeConfirmDialog.dispose(); } } - - private static JScrollPane getParentScrollPane(Component component) { - if (component.getParent() == null) { - return null; - } - if (component.getParent() instanceof JScrollPane) { - return (JScrollPane) component.getParent(); - } - return getParentScrollPane(component.getParent()); - } - } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/ThemeToggleGuide.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/ThemeToggleGuide.java index 07fb60041..3ab6234a3 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/ThemeToggleGuide.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/ThemeToggleGuide.java @@ -28,6 +28,7 @@ import com.fr.design.mainframe.theme.TemplateThemeGridPagesPane; import com.fr.design.mainframe.theme.dialog.TemplateThemeUsingDialog; import com.fr.design.utils.ComponentUtils; +import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import java.awt.Component; import java.util.List; @@ -35,7 +36,6 @@ import java.util.TimerTask; public class ThemeToggleGuide { private static final int PAGE_THEME_COUNT = 9; - private static final int DEFAULT_THEME_INDEX = 4; private static TemplateThemeUsingDialog themeDialog; private static String TARGET_XCREATOR_NAME = "chart00"; private static String filePath; @@ -64,11 +64,11 @@ public class ThemeToggleGuide { @Override public boolean prepared() { List themeNames = FormThemeConfig.getInstance().getThemeNames(); - themeLoadCount = Math.min(themeNames.size(), PAGE_THEME_COUNT); + themeLoadCount = themeNames.size(); if (themeLoadCount == 0) { GuideManager.getInstance().getCurrentGuide().terminate(); } - selectedThemeIndex = Math.min(themeLoadCount - 1, DEFAULT_THEME_INDEX); + selectedThemeIndex = Math.max(themeLoadCount - 5, 0); int lazyCount = themeLoadCount; AsyncThemeFetcher asyncThemeFetcher = new AsyncThemeFetcher<>(PAGE_THEME_COUNT, FormThemeConfig.getInstance()); for (int index = 0; index < lazyCount; index++) { @@ -82,6 +82,7 @@ public class ThemeToggleGuide { GuideCreateUtils.showNoFileAuthAlert(); GuideManager.getInstance().getCurrentGuide().terminate(); } else { + EastRegionContainerPane.getInstance().showContainer(); EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS); asyncThemeFetcher.shutdown(); GuideManager.getInstance().getCurrentGuide().start(); @@ -141,7 +142,7 @@ public class ThemeToggleGuide { scene.showScene(); GuideCreateUtils.TIMER.purge(); } - },100); + },300); return false; } }); @@ -230,7 +231,11 @@ public class ThemeToggleGuide { if (themeDialog == null) { themeDialog = new TemplateThemeUsingDialog(); } + String name = FormThemeConfig.getInstance().getThemeNames().get(selectedThemeIndex); + Component component = ComponentUtils.findComponentByName(themeDialog.getContentPane(), name); + JScrollPane scrollPane = GuideCreateUtils.getParentScrollPane(component); GuideCreateUtils.showDialogWithoutModal(themeDialog); + scrollPane.getVerticalScrollBar().setValue(component.getY()); } private static void closeTemplateThemeUsingDialog() { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryHint.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryHint.java index c1e361ec2..c1775f718 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryHint.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryHint.java @@ -58,6 +58,6 @@ public class GuideEntryHint { private Point getBubbleLocation() { Point point = SwingUtilities.convertPoint(GuideEntryPane.getGuideEntryPane(),0,0, guideView.getRootPane()); Dimension size = GuideEntryPane.getGuideEntryPane().getSize(); - return new Point(point.x - 187,point.y + size.height); + return new Point(point.x - 187,point.y + size.height + 5); } } diff --git a/designer-realize/src/main/java/com/fr/design/share/ui/generate/ShareGeneratePane.java b/designer-realize/src/main/java/com/fr/design/share/ui/generate/ShareGeneratePane.java index 99d6c556b..2d027db89 100644 --- a/designer-realize/src/main/java/com/fr/design/share/ui/generate/ShareGeneratePane.java +++ b/designer-realize/src/main/java/com/fr/design/share/ui/generate/ShareGeneratePane.java @@ -19,24 +19,22 @@ import com.fr.design.mainframe.share.collect.ComponentCollector; import com.fr.design.mainframe.share.exception.LackOfValueException; import com.fr.design.mainframe.share.generate.ComponentGeneratorCenter; import com.fr.design.mainframe.share.select.ComponentTransformerFactory; -import com.fr.design.mod.ContentObjectManager; -import com.fr.form.share.exception.NetWorkFailedException; -import com.fr.form.share.group.DefaultShareGroup; import com.fr.design.mainframe.share.util.ShareUIUtils; +import com.fr.design.mod.ContentObjectManager; import com.fr.design.share.effect.EffectItemGroup; import com.fr.design.share.utils.EffectItemUtils; import com.fr.design.share.utils.ShareDialogUtils; import com.fr.form.share.DefaultSharableWidget; +import com.fr.form.share.Group; import com.fr.form.share.config.ComponentReuseConfigManager; +import com.fr.form.share.exception.NetWorkFailedException; +import com.fr.form.share.group.DefaultShareGroup; import com.fr.form.share.group.DefaultShareGroupManager; -import com.fr.form.share.Group; import com.fr.form.share.record.ShareWidgetInfoManager; import com.fr.form.ui.Widget; import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; -import java.util.HashSet; -import java.util.Set; import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.SwingWorker; @@ -51,7 +49,9 @@ import java.awt.Image; import java.awt.Rectangle; import java.awt.event.ItemEvent; import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -65,8 +65,6 @@ public class ShareGeneratePane extends BasicPane { private static final Dimension DIALOG_SIZE = new Dimension(670, 760); private static final Dimension DIALOG_NORMAL_SIZE = new Dimension(670, 610); private static final Border DIALOG_BORDER = BorderFactory.createEmptyBorder(0, 6, 4, 6); - private static final double MAX_WIDTH = 500.0; - private static final double MAX_HEIGHT = 260.0; private JPanel mainPane = null; private ShareMainPane uploadPane = null; @@ -213,7 +211,6 @@ public class ShareGeneratePane extends BasicPane { dialog.setButtonEnabled(false); ShareDialogUtils.getInstance().setShareDialog(dialog); dialog.addDialogActionListener(new DialogActionAdapter() { - @Override public void doOk() { ShareMainPane mainPane = getSelectMainPane(); @@ -297,29 +294,11 @@ public class ShareGeneratePane extends BasicPane { } private boolean generateModule(DefaultSharableWidget info) throws Exception { - - DefaultSharableWidget transformInfo = transform(info); - ComponentGenerateInfo generateInfo = new ComponentGenerateInfo(uploadCheckbox.isSelected(), jt, paraMap, shareWidget, transformInfo); + ComponentGenerateInfo generateInfo = new ComponentGenerateInfo(uploadCheckbox.isSelected(), jt, paraMap, shareWidget, info); ComponentGeneratorCenter center = new ComponentGeneratorCenter(generateInfo); return center.generate(); } - private DefaultSharableWidget transform(DefaultSharableWidget info) { - confineSize(info); - - //先屏蔽 - //if (shareWidget instanceof AbstractBorderStyleWidget) { - // AbstractBorderStyleWidget styleWidget = (AbstractBorderStyleWidget) shareWidget; - // ExtendSharableAttrMark attrMark = styleWidget.getWidgetAttrMark(ExtendSharableAttrMark.XML_TAG); - // if (attrMark != null) { - // String shareId = attrMark.getShareId(); - // info.setId(shareId); - // } - //} - return info; - } - - @Override protected String title4PopupWindow() { return Toolkit.i18nText("Fine-Design_Share_Module_Msg"); @@ -328,20 +307,4 @@ public class ShareGeneratePane extends BasicPane { private Dimension getDialogSize() { return effectItemGroups.size() > 0 ? DIALOG_SIZE : DIALOG_NORMAL_SIZE; } - - - private void confineSize(DefaultSharableWidget info) { - double width = info.getWidth(); - double height = info.getHeight(); - if (width > 0 && height > 0 && (width > MAX_WIDTH || height > MAX_HEIGHT)) { - double aspectRatio = width / height; - if (width / height > MAX_WIDTH / MAX_HEIGHT) { - info.setWidth((int) MAX_WIDTH); - info.setHeight((int) (MAX_WIDTH / aspectRatio)); - } else { - info.setHeight((int) MAX_HEIGHT); - info.setWidth((int) (MAX_HEIGHT * aspectRatio)); - } - } - } }