diff --git a/designer/src/com/fr/aspectj/designer/TemplateProcessTracker.aj b/designer/src/com/fr/aspectj/designer/TemplateProcessTracker.aj index d0f310829..8e4eeb716 100644 --- a/designer/src/com/fr/aspectj/designer/TemplateProcessTracker.aj +++ b/designer/src/com/fr/aspectj/designer/TemplateProcessTracker.aj @@ -41,7 +41,7 @@ public aspect TemplateProcessTracker { before(ActionEvent e) : onActionPerformed(e) { SourceLocation sl = thisJoinPoint.getSourceLocation(); // !within(LogHandlerBar) 没用, 手动过滤 - if (e.getSource().toString().contains("javax.swing.Timer")) { + if (e != null && e.getSource().toString().contains("javax.swing.Timer")) { return; } diff --git a/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java b/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java index b6c482ff7..d5901f8f4 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java +++ b/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java @@ -8,12 +8,15 @@ import com.fr.stable.StringUtils; * Created by XiaXiang on 2017/5/8. */ public class AlphaFineHelper { + private static AlphaFineDialog dialog; /** * 弹出alphafine搜索面板 */ - public static void showAlphaFineDialog() { - AlphaFineDialog dialog = new AlphaFineDialog(DesignerContext.getDesignerFrame()); + public static void showAlphaFineDialog(boolean forceOpen) { + if (dialog == null) { + dialog = new AlphaFineDialog(DesignerContext.getDesignerFrame(), forceOpen); + } dialog.setVisible(true); } diff --git a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index 2c7519ac8..25bcef15f 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -67,8 +67,10 @@ public class AlphaFineDialog extends UIDialog { private JList searchResultList; private SearchListModel searchListModel; private SwingWorker searchWorker; + //是否强制打开,因为面板是否关闭绑定了全局鼠标事件,这里需要处理一下 + private boolean foreOpen; - public AlphaFineDialog(Frame parent) { + public AlphaFineDialog(Frame parent, boolean foreOpen) { super(parent); initProperties(); initListener(); @@ -485,8 +487,9 @@ public class AlphaFineDialog extends UIDialog { Point p = k.getLocationOnScreen(); Rectangle dialogRectangle = AlphaFineDialog.this.getBounds(); Rectangle paneRectangle = new Rectangle(AlphaFinePane.createAlphaFinePane().getLocationOnScreen(), AlphaFinePane.createAlphaFinePane().getSize()); - if (!dialogRectangle.contains(p) && !paneRectangle.contains(p)) { + if (!dialogRectangle.contains(p) && !paneRectangle.contains(p) && !foreOpen) { AlphaFineDialog.this.dispose(); + foreOpen = false; } } } @@ -517,7 +520,7 @@ public class AlphaFineDialog extends UIDialog { } private static void doClickAction() { - AlphaFineHelper.showAlphaFineDialog(); + AlphaFineHelper.showAlphaFineDialog(false); } @@ -666,4 +669,11 @@ public class AlphaFineDialog extends UIDialog { } + public boolean isForeOpen() { + return foreOpen; + } + + public void setForeOpen(boolean foreOpen) { + this.foreOpen = foreOpen; + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java index f0d5d7ca6..6c23ab403 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java +++ b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java @@ -2,6 +2,8 @@ package com.fr.design.mainframe.alphafine.component; import com.fr.base.BaseUtils; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphafineContext; +import com.fr.design.actions.help.alphafine.AlphafineListener; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.alphafine.AlphaFineHelper; @@ -37,7 +39,13 @@ public class AlphaFinePane extends BasicPane { refreshButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - AlphaFineHelper.showAlphaFineDialog(); + AlphaFineHelper.showAlphaFineDialog(false); + } + }); + AlphafineContext.addAlphafineContextListener(new AlphafineListener() { + @Override + public void showDialog() { + AlphaFineHelper.showAlphaFineDialog(true); } }); } diff --git a/designer/src/com/fr/design/mainframe/alphafine/images/check.png b/designer/src/com/fr/design/mainframe/alphafine/images/check.png new file mode 100644 index 000000000..1b0e017b5 Binary files /dev/null and b/designer/src/com/fr/design/mainframe/alphafine/images/check.png differ diff --git a/designer/src/com/fr/design/mainframe/alphafine/images/open.png b/designer/src/com/fr/design/mainframe/alphafine/images/open.png new file mode 100644 index 000000000..b37113b4f Binary files /dev/null and b/designer/src/com/fr/design/mainframe/alphafine/images/open.png differ diff --git a/designer/src/com/fr/design/mainframe/alphafine/images/remind.png b/designer/src/com/fr/design/mainframe/alphafine/images/remind.png new file mode 100644 index 000000000..d7de53f96 Binary files /dev/null and b/designer/src/com/fr/design/mainframe/alphafine/images/remind.png differ diff --git a/designer/src/com/fr/design/mainframe/alphafine/images/remind_close.png b/designer/src/com/fr/design/mainframe/alphafine/images/remind_close.png new file mode 100644 index 000000000..c418eb8e8 Binary files /dev/null and b/designer/src/com/fr/design/mainframe/alphafine/images/remind_close.png differ diff --git a/designer/src/com/fr/design/mainframe/alphafine/images/uncheck.png b/designer/src/com/fr/design/mainframe/alphafine/images/uncheck.png new file mode 100644 index 000000000..0e23e1961 Binary files /dev/null and b/designer/src/com/fr/design/mainframe/alphafine/images/uncheck.png differ diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/AlphaSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/AlphaSearchManager.java index e84ebded5..cb60f9aa1 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/AlphaSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/AlphaSearchManager.java @@ -37,12 +37,12 @@ public class AlphaSearchManager implements AlphaFineSearchProcessor { @Override public synchronized SearchResult getLessSearchResult(String searchText) { SearchResult recentModelList = recentSearchManager.getLessSearchResult(searchText); - SearchResult concludeModelList = recommendSearchManager.getLessSearchResult(searchText); + SearchResult recommendModelList = recommendSearchManager.getLessSearchResult(searchText); SearchResult actionModelList = actionSearchManager.getLessSearchResult(searchText); SearchResult fileModelList = fileSearchManager.getLessSearchResult(searchText); SearchResult documentModelList = documentSearchManager.getLessSearchResult(searchText); SearchResult pluginModelList = pluginSearchManager.getLessSearchResult(searchText); - recentModelList.addAll(concludeModelList); + recentModelList.addAll(recommendModelList); recentModelList.addAll(actionModelList); recentModelList.addAll(fileModelList); recentModelList.addAll(documentModelList); diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java index 9f060def6..8742c09ba 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java @@ -97,7 +97,10 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear private void addModelToList(List list, String name) { try { - list.add(CellModelHelper.getModelFromJson(new JSONObject(name))); + AlphaCellModel model = CellModelHelper.getModelFromJson(new JSONObject(name)); + if (model != null) { + list.add(CellModelHelper.getModelFromJson(new JSONObject(name))); + } } catch (JSONException e) { FRLogger.getLogger().error(e.getMessage()); } diff --git a/designer_base/src/com/fr/aspectj/designerbase/AlphaFineReminder.aj b/designer_base/src/com/fr/aspectj/designerbase/AlphaFineReminder.aj index ba1422f9e..48701f764 100644 --- a/designer_base/src/com/fr/aspectj/designerbase/AlphaFineReminder.aj +++ b/designer_base/src/com/fr/aspectj/designerbase/AlphaFineReminder.aj @@ -1,5 +1,10 @@ package com.fr.aspectj.designerbase; +import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphafineConfigManager; +import com.fr.design.actions.help.alphafine.RemindDialog; +import com.fr.design.mainframe.DesignerContext; + import java.awt.event.ActionEvent; /** @@ -15,9 +20,34 @@ public aspect AlphaFineReminder { return; } if (e != null && e.getSource().getClass().getName().equals("com.fr.design.gui.imenu.UIMenuItem") && point.contains("com.fr.design.actions")) { - //System.out.print(thisJoinPoint + "\n"); + remind(); } } + + /** + * 判断是否弹出广告框 + */ + private static void remind() { + AlphafineConfigManager manager = DesignerEnvManager.getEnvManager().getAlphafineConfigManager(); + + if (manager.isNeedRemind()) { + if (manager.getOperateCount() > 4) { + showReminderDialog(); + } else { + manager.setOperateCount(manager.getOperateCount() + 1); + } + } + } + + /** + * 弹框提醒使用AlphaFine + */ + private static void showReminderDialog() { + RemindDialog remindDialog = new RemindDialog(DesignerContext.getDesignerFrame()); + remindDialog.setVisible(true); + } + + } diff --git a/designer_base/src/com/fr/aspectj/designerbase/TemplateProcessTracker.aj b/designer_base/src/com/fr/aspectj/designerbase/TemplateProcessTracker.aj index bc8b58615..1ab23100b 100644 --- a/designer_base/src/com/fr/aspectj/designerbase/TemplateProcessTracker.aj +++ b/designer_base/src/com/fr/aspectj/designerbase/TemplateProcessTracker.aj @@ -5,29 +5,27 @@ package com.fr.aspectj.designerbase; * Created by plough on 2017/3/3. */ -import com.fr.design.mainframe.templateinfo.TemplateInfoCollector; import org.aspectj.lang.reflect.SourceLocation; import java.awt.event.ActionEvent; import java.awt.event.MouseEvent; -import java.util.Date; public aspect TemplateProcessTracker { //声明一个pointcut,匹配你需要的方法 - pointcut onMouseClicked(MouseEvent e) : + pointcut onMouseClicked(MouseEvent e): execution(* mouseClicked(MouseEvent)) && args(e); - pointcut onMousePressed(MouseEvent e) : + pointcut onMousePressed(MouseEvent e): execution(* mousePressed(MouseEvent)) && args(e); - pointcut onMouseReleased(MouseEvent e) : + pointcut onMouseReleased(MouseEvent e): execution(* mouseReleased(MouseEvent)) && args(e); - pointcut onActionPerformed(ActionEvent e) : + pointcut onActionPerformed(ActionEvent e): execution(* actionPerformed(ActionEvent)) && args(e); - pointcut onSetValueAt(Object v, int r, int c) : + pointcut onSetValueAt(Object v, int r, int c): execution(* setValueAt(java.lang.Object, int, int)) && args(v, r, c); //before表示之前的意思 //这整个表示在MouseAdapter的public void mouseXXX(MouseEvent)方法调用之前,你想要执行的代码 - before(MouseEvent e) : onMouseClicked(e) || onMousePressed(e) || onMouseReleased(e) { + before(MouseEvent e): onMouseClicked(e) || onMousePressed(e) || onMouseReleased(e) { SourceLocation sl = thisJoinPoint.getSourceLocation();//切面对应的代码位置 //String log = String.format("%s:\n%s\n%s\n%s\n\n", new Date(), sl, e, e.getSource()); @@ -35,10 +33,10 @@ public aspect TemplateProcessTracker { //TemplateInfoCollector.appendProcess(log); } //同上 - before(ActionEvent e) : onActionPerformed(e) { + before(ActionEvent e): onActionPerformed(e) { SourceLocation sl = thisJoinPoint.getSourceLocation(); // !within(LogHandlerBar) 没用, 手动过滤 - if (e.getSource().toString().contains("javax.swing.Timer")) { + if (e != null && e.getSource().toString().contains("javax.swing.Timer")) { return; } @@ -48,12 +46,12 @@ public aspect TemplateProcessTracker { } //同上 - before(Object v, int r, int c) : onSetValueAt(v, r, c) { + before(Object v, int r, int c): onSetValueAt(v, r, c) { SourceLocation sl = thisJoinPoint.getSourceLocation(); - //String log = String.format("%s:\n%s\nset value: %s at (%d, %d)\n\n", new Date(), sl, v, r, c); + //String log getSourceLocation= String.format("%s:\n%s\nset value: %s at (%d, %d)\n\n", new Date(), sl, v, r, c); String log = ""; - // TemplateInfoCollector.appendProcess(log); + // TemplateInfoCollector.appendProcess(log); } diff --git a/designer_base/src/com/fr/design/DesignerEnvManager.java b/designer_base/src/com/fr/design/DesignerEnvManager.java index e7b4f7dfc..75b4749d8 100644 --- a/designer_base/src/com/fr/design/DesignerEnvManager.java +++ b/designer_base/src/com/fr/design/DesignerEnvManager.java @@ -5,7 +5,7 @@ package com.fr.design; import com.fr.base.*; import com.fr.dav.LocalEnv; -import com.fr.design.actions.help.AlphaFine.AlphafineConfigManager; +import com.fr.design.actions.help.alphafine.AlphafineConfigManager; import com.fr.design.constants.UIConstants; import com.fr.env.RemoteEnv; import com.fr.env.SignIn; diff --git a/designer_base/src/com/fr/design/actions/help/AboutPane.java b/designer_base/src/com/fr/design/actions/help/AboutPane.java index 1155f4e92..9c8953597 100644 --- a/designer_base/src/com/fr/design/actions/help/AboutPane.java +++ b/designer_base/src/com/fr/design/actions/help/AboutPane.java @@ -47,7 +47,7 @@ public class AboutPane extends JPanel { BoxCenterAlignmentCopyablePane buildCopyPane = new BoxCenterAlignmentCopyablePane( getBuildTitle(), - GeneralUtils.readFullBuildNO(), + GeneralUtils.readBuildNO(), new String[]{ Inter.getLocText("FR-Designer-Basic_Copy_Build_NO"), Inter.getLocText("FR-Designer-Basic_Copy_Build_NO_OK") diff --git a/designer_base/src/com/fr/design/actions/help/AlphaFine/AlphafineAction.java b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineAction.java similarity index 96% rename from designer_base/src/com/fr/design/actions/help/AlphaFine/AlphafineAction.java rename to designer_base/src/com/fr/design/actions/help/alphafine/AlphafineAction.java index 7cb1ec239..fdd6e060e 100644 --- a/designer_base/src/com/fr/design/actions/help/AlphaFine/AlphafineAction.java +++ b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineAction.java @@ -1,4 +1,4 @@ -package com.fr.design.actions.help.AlphaFine; +package com.fr.design.actions.help.alphafine; import com.fr.base.BaseUtils; import com.fr.design.DesignerEnvManager; @@ -9,7 +9,6 @@ import com.fr.design.dialog.DialogActionListener; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.menu.MenuKeySet; -import com.fr.general.Inter; import javax.swing.*; import java.awt.event.ActionEvent; diff --git a/designer_base/src/com/fr/design/actions/help/AlphaFine/AlphafineConfigManager.java b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineConfigManager.java similarity index 86% rename from designer_base/src/com/fr/design/actions/help/AlphaFine/AlphafineConfigManager.java rename to designer_base/src/com/fr/design/actions/help/alphafine/AlphafineConfigManager.java index aa73d7afe..eba6de79c 100644 --- a/designer_base/src/com/fr/design/actions/help/AlphaFine/AlphafineConfigManager.java +++ b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineConfigManager.java @@ -1,4 +1,4 @@ -package com.fr.design.actions.help.AlphaFine; +package com.fr.design.actions.help.alphafine; import com.fr.stable.OperatingSystem; import com.fr.stable.StringUtils; @@ -67,6 +67,15 @@ public class AlphafineConfigManager implements XMLable { */ private KeyStroke shortCutKeyStore; + /** + * 是否提醒 + */ + private boolean isNeedRemind = true; + + /** + * 直接操作菜单次数 + */ + private int operateCount; @@ -92,7 +101,9 @@ public class AlphafineConfigManager implements XMLable { this.setContainAction(reader.getAttrAsBoolean("isContainAction", true)); this.setContainTemplate(reader.getAttrAsBoolean("isContainTemplate", true)); this.setContainFileContent(reader.getAttrAsBoolean("isContainFileContent", false)); - this.setShortcuts(reader.getAttrAsString("shortcuts", "meta + f")); + this.setShortcuts(reader.getAttrAsString("shortcuts", getDefaultShortCuts())); + this.setNeedRemind(reader.getAttrAsBoolean("isNeedRemind", true)); + this.setOperateCount(reader.getAttrAsInt("operateCount", 0)); } @@ -109,7 +120,9 @@ public class AlphafineConfigManager implements XMLable { .attr("isContainDocument", this.isContainDocument()) .attr("isContainTemplate", this.isContainTemplate()) .attr("isContainPlugin", this.isContainPlugin()) - .attr("isContainFileContent", this.isContainFileContent()); + .attr("isContainFileContent", this.isContainFileContent()) + .attr("isNeedRemind", this.isNeedRemind()) + .attr("operateCount", this.getOperateCount()); writer.end(); } @@ -214,4 +227,20 @@ public class AlphafineConfigManager implements XMLable { public void setContainFileContent(boolean containFileContent) { isContainFileContent = containFileContent; } + + public boolean isNeedRemind() { + return isNeedRemind; + } + + public void setNeedRemind(boolean needRemind) { + isNeedRemind = needRemind; + } + + public int getOperateCount() { + return operateCount; + } + + public void setOperateCount(int operateCount) { + this.operateCount = operateCount; + } } diff --git a/designer_base/src/com/fr/design/actions/help/AlphaFine/AlphafineConfigPane.java b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineConfigPane.java similarity index 99% rename from designer_base/src/com/fr/design/actions/help/AlphaFine/AlphafineConfigPane.java rename to designer_base/src/com/fr/design/actions/help/alphafine/AlphafineConfigPane.java index 5d4d75275..d982cbeec 100644 --- a/designer_base/src/com/fr/design/actions/help/AlphaFine/AlphafineConfigPane.java +++ b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineConfigPane.java @@ -1,4 +1,4 @@ -package com.fr.design.actions.help.AlphaFine; +package com.fr.design.actions.help.alphafine; import com.fr.design.DesignerEnvManager; import com.fr.design.dialog.BasicPane; diff --git a/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineContext.java b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineContext.java new file mode 100644 index 000000000..429f299d6 --- /dev/null +++ b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineContext.java @@ -0,0 +1,29 @@ +package com.fr.design.actions.help.alphafine; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by XiaXiang on 2017/5/27. + */ +public class AlphafineContext { + private static List fireLoginContextListener = new ArrayList(); + + /** + * 触发AlphaFine弹窗 + */ + public static void fireAlphaFineContextListener() { + for (AlphafineListener l : fireLoginContextListener) { + l.showDialog(); + } + } + + /** + * 添加一个弹出AlphaFine的监听事件 + * + * @param l AlphaFine框弹出监听事件 + */ + public static void addAlphafineContextListener(AlphafineListener l) { + fireLoginContextListener.add(l); + } +} diff --git a/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineListener.java b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineListener.java new file mode 100644 index 000000000..01c7905d6 --- /dev/null +++ b/designer_base/src/com/fr/design/actions/help/alphafine/AlphafineListener.java @@ -0,0 +1,8 @@ +package com.fr.design.actions.help.alphafine; + +/** + * Created by XiaXiang on 2017/5/27. + */ +public interface AlphafineListener { + void showDialog(); +} diff --git a/designer_base/src/com/fr/design/actions/help/alphafine/RemindDialog.java b/designer_base/src/com/fr/design/actions/help/alphafine/RemindDialog.java new file mode 100644 index 000000000..9ae6f864a --- /dev/null +++ b/designer_base/src/com/fr/design/actions/help/alphafine/RemindDialog.java @@ -0,0 +1,43 @@ +package com.fr.design.actions.help.alphafine; + +import com.fr.design.DesignerEnvManager; +import com.fr.design.dialog.UIDialog; +import com.fr.design.utils.gui.GUICoreUtils; + +import java.awt.*; + +/** + * Created by XiaXiang on 2017/5/26. + */ +public class RemindDialog extends UIDialog { + private RemindPane remindPane; + private static final int WIDTH = 600; + private static final int HEIGHT = 400; + public RemindDialog(Frame parent) { + super(parent); + setUndecorated(true); + setSize(WIDTH, HEIGHT); + initComponent(); + GUICoreUtils.centerWindow(this); + } + + private void initComponent() { + final AlphafineConfigManager manager = DesignerEnvManager.getEnvManager().getAlphafineConfigManager(); + remindPane = new RemindPane(manager, this); + this.add(remindPane); + + } + + @Override + public void checkValid() throws Exception { + + } + + public RemindPane getRemindPane() { + return remindPane; + } + + public void setRemindPane(RemindPane remindPane) { + this.remindPane = remindPane; + } +} diff --git a/designer_base/src/com/fr/design/actions/help/alphafine/RemindPane.java b/designer_base/src/com/fr/design/actions/help/alphafine/RemindPane.java new file mode 100644 index 000000000..1e8261965 --- /dev/null +++ b/designer_base/src/com/fr/design/actions/help/alphafine/RemindPane.java @@ -0,0 +1,146 @@ +package com.fr.design.actions.help.alphafine; + +import com.fr.design.dialog.UIDialog; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ilable.UILabel; +import com.fr.general.IOUtils; +import com.fr.general.Inter; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +/** + * Created by XiaXiang on 2017/5/26. + */ +public class RemindPane extends JPanel { + + private UIButton openButton; + private JPanel backgroundPane; + private UILabel noRemindLabel; + private UILabel checkLabel; + private Icon checkIcon = IOUtils.readIcon("/com/fr/design/mainframe/alphafine/images/check.png"); + private Icon unCheckIcon = IOUtils.readIcon("/com/fr/design/mainframe/alphafine/images/uncheck.png"); + private Icon closeIcon = IOUtils.readIcon("/com/fr/design/mainframe/alphafine/images/remind_close.png"); + private Icon labelIcon = IOUtils.readIcon("/com/fr/design/mainframe/alphafine/images/remind.png"); + private Icon openIcon = IOUtils.readIcon("com/fr/design/mainframe/alphafine/images/open.png"); + + private static final int WIDTH = 600; + private static final int HEIGHT = 400; + private static final int CLOSE = 30; + + private static final Rectangle OPEN = new Rectangle(30, 300, 150, 40); + private static final Rectangle REMIND = new Rectangle(95, 350, 100, 20); + private static final Rectangle CHECK = new Rectangle(70, 350, 20, 20); + public static final Font MEDIUM_FONT = new Font("Song_TypeFace", 0, 12); + public static final Font LARGE_FONT = new Font("Song_TypeFace", 0, 18); + + public JComponent closeButton = new JComponent() { + protected void paintComponent(Graphics g) { + closeIcon.paintIcon(this, g, 0, 0); + } + }; + + public RemindPane(AlphafineConfigManager manager, UIDialog remindDialog) { + this.setPreferredSize(new Dimension(WIDTH, HEIGHT)); + initUI(manager, remindDialog); + this.setLayout(getAbsoluteLayout()); + } + + /** + * 初始化面板 + * @param manager + * @param dialog + */ + private void initUI(final AlphafineConfigManager manager, final UIDialog dialog) { + + openButton = new UIButton(); + openButton.setIcon(openIcon); + openButton.set4ToolbarButton(); + openButton.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + manager.setOperateCount(0); + dialog.dispose(); + AlphafineContext.fireAlphaFineContextListener(); + + } + }); + noRemindLabel = new UILabel(Inter.getLocText("FR-Designer-Alphafine_No_Remind")); + noRemindLabel.setFont(MEDIUM_FONT); + noRemindLabel.setForeground(Color.white); + checkLabel = new UILabel(); + checkLabel.setIcon(unCheckIcon); + checkLabel.addMouseListener(new MouseAdapter() { + private boolean isCheck = false; + + @Override + public void mousePressed(MouseEvent e) { + if (isCheck) { + checkLabel.setIcon(unCheckIcon); + manager.setNeedRemind(true); + isCheck = false; + } else { + checkLabel.setIcon(checkIcon); + manager.setNeedRemind(false); + isCheck = true; + } + } + }); + backgroundPane = new JPanel(new BorderLayout()); + backgroundPane.add(new UILabel(labelIcon), BorderLayout.CENTER); + closeButton.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + manager.setOperateCount(0); + dialog.dispose(); + + } + }); + add(closeButton, 0); + add(checkLabel, 1); + add(openButton, 2); + add(noRemindLabel, 3); + add(backgroundPane, 4); + } + + /** + * 控件排列用绝对布局 + * @return + */ + protected LayoutManager getAbsoluteLayout() { + return new LayoutManager() { + + @Override + public void removeLayoutComponent(Component comp) { + } + + @Override + public Dimension preferredLayoutSize(Container parent) { + return parent.getPreferredSize(); + } + + @Override + public Dimension minimumLayoutSize(Container parent) { + return null; + } + + @Override + public void layoutContainer(Container parent) { + int width = parent.getWidth(); + int height = parent.getHeight(); + closeButton.setBounds((width - CLOSE), 0, CLOSE, CLOSE); + openButton.setBounds(OPEN); + noRemindLabel.setBounds(REMIND); + checkLabel.setBounds(CHECK); + backgroundPane.setBounds(0, 0, width, height); + } + + @Override + public void addLayoutComponent(String name, Component comp) { + } + }; + } + +} diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 9d6332e6a..e632fafd2 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2005,4 +2005,5 @@ FR-Designer_Templates_Content=Templates Contents FR-Designer_AlphaFine_ShowAll=show all FR-Designer_AlphaFine_Latest=Latest FR-Designer_AlphaFine_ShowLess=show less -FR-Designer_Alphafine=AlphaFine \ No newline at end of file +FR-Designer_Alphafine=AlphaFine +FR-Designer-Alphafine_No_Remind= \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index e8f9e376c..774beedf5 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -2003,4 +2003,5 @@ FR-Designer_Templates_Content=Template'Contents FR-Designer_AlphaFine_ShowAll=show all FR-Designer_AlphaFine_Latest=Recent FR-Designer_AlphaFine_ShowLess=show less -FR-Designer_Alphafine=AlphaFine \ No newline at end of file +FR-Designer_Alphafine=AlphaFine +FR-Designer-Alphafine_No_Remind=don't remind \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 1fe8ac3c1..008f2df8d 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -2001,4 +2001,5 @@ FR-Designer_AlphaFine_ShowAll=\u663E\u793A\u5168\u90E8 FR-Designer_AlphaFine_Conclude=\u731C\u60A8\u9700\u8981 FR-Designer_AlphaFine_Latest=\u672C\u5730\u5E38\u7528 FR-Designer_AlphaFine_ShowLess=\u6536\u8D77 -FR-Designer_Alphafine=AlphaFine\u667A\u80FD\u641C\u7D22 \ No newline at end of file +FR-Designer_Alphafine=AlphaFine\u667A\u80FD\u641C\u7D22 +FR-Designer-Alphafine_No_Remind=\u4E0D\u518D\u63D0\u793A \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 08a75d41e..4a8a86d71 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -1999,4 +1999,5 @@ FR-Designer_Templates_Content=\u6A21\u677F\u5167\u5BB9 FR-Designer_AlphaFine_Latest=\u6700\u8FD1\u5E38\u7528 FR-Designer_AlphaFine_ShowLess=\u6536\u8D77 FR-Designer_Alphafine=AlphaFine\u667A\u80FD\u641C\u7D22 -FR-Designer_AlphaFine_ShowAll=\u986F\u793A\u5168\u90E8 \ No newline at end of file +FR-Designer_AlphaFine_ShowAll=\u986F\u793A\u5168\u90E8 +FR-Designer-Alphafine_No_Remind=\u4E0D\u518D\u63D0\u793A \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java index 0bf286e51..e45ade484 100644 --- a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java +++ b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java @@ -187,7 +187,7 @@ public class DesignerLogHandler { } private JTextPane initLogJTextArea() { - JTextPane resultPane = new JTextPane(); + final JTextPane resultPane = new JTextPane(); InputMap inputMap = resultPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER), DefaultEditorKit.copyAction); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, DEFAULT_MODIFIER), DefaultEditorKit.selectAllAction); diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index ff49aa7b0..f80e20331 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -11,7 +11,7 @@ import com.fr.design.actions.UpdateAction; import com.fr.design.actions.community.*; import com.fr.design.actions.file.*; import com.fr.design.actions.help.AboutAction; -import com.fr.design.actions.help.AlphaFine.AlphafineAction; +import com.fr.design.actions.help.alphafine.AlphafineAction; import com.fr.design.actions.help.TutorialAction; import com.fr.design.actions.help.WebDemoAction; import com.fr.design.actions.server.*; diff --git a/designer_chart/src/com/fr/aspectj/designerchart/TemplateProcessTracker.aj b/designer_chart/src/com/fr/aspectj/designerchart/TemplateProcessTracker.aj index 60038d4a3..89ed91033 100644 --- a/designer_chart/src/com/fr/aspectj/designerchart/TemplateProcessTracker.aj +++ b/designer_chart/src/com/fr/aspectj/designerchart/TemplateProcessTracker.aj @@ -38,7 +38,7 @@ public aspect TemplateProcessTracker { before(ActionEvent e) : onActionPerformed(e) { SourceLocation sl = thisJoinPoint.getSourceLocation(); // !within(LogHandlerBar) 没用, 手动过滤 - if (e.getSource().toString().contains("javax.swing.Timer")) { + if (e != null && e.getSource().toString().contains("javax.swing.Timer")) { return; } diff --git a/designer_form/src/com/fr/aspectj/designerform/TemplateProcessTracker.aj b/designer_form/src/com/fr/aspectj/designerform/TemplateProcessTracker.aj index 187079371..3be1a77fa 100644 --- a/designer_form/src/com/fr/aspectj/designerform/TemplateProcessTracker.aj +++ b/designer_form/src/com/fr/aspectj/designerform/TemplateProcessTracker.aj @@ -36,7 +36,7 @@ public aspect TemplateProcessTracker { before(ActionEvent e) : onActionPerformed(e) { SourceLocation sl = thisJoinPoint.getSourceLocation(); // !within(LogHandlerBar) 没用, 手动过滤 - if (e.getSource().toString().contains("javax.swing.Timer")) { + if (e != null && e.getSource().toString().contains("javax.swing.Timer")) { return; }