Browse Source

1、更改插件窗口以适配插件商店布局设计

2、添加获取插件新的请求
master
vito 8 years ago
parent
commit
cbbf0bf07c
  1. 3
      designer_base/src/com/fr/design/actions/server/PluginManagerAction.java
  2. 1
      designer_base/src/com/fr/design/dialog/BasicDialog.java
  3. 766
      designer_base/src/com/fr/design/dialog/BasicPane.java
  4. 25
      designer_base/src/com/fr/design/extra/PluginWebBridge.java
  5. 5
      designer_base/src/com/fr/design/extra/PluginWebPane.java

3
designer_base/src/com/fr/design/actions/server/PluginManagerAction.java

@ -28,8 +28,7 @@ public class PluginManagerAction extends UpdateAction {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
final PluginManagerPane managerPane = new PluginManagerPane(); final PluginManagerPane managerPane = new PluginManagerPane();
BasicDialog dlg = managerPane.showLargeWindow(DesignerContext.getDesignerFrame(),null); BasicDialog dlg = managerPane.showCustomSizeWindow(DesignerContext.getDesignerFrame(), null, BasicDialog.LARGE_SHOP);
dlg.setVisible(true); dlg.setVisible(true);
} }

1
designer_base/src/com/fr/design/dialog/BasicDialog.java

@ -10,6 +10,7 @@ public abstract class BasicDialog extends UIDialog {
public static final Dimension MEDIUM = new Dimension(600, 400); public static final Dimension MEDIUM = new Dimension(600, 400);
public static final Dimension DEFAULT = new Dimension(660, 600); public static final Dimension DEFAULT = new Dimension(660, 600);
public static final Dimension LARGE = new Dimension(900, 600); public static final Dimension LARGE = new Dimension(900, 600);
public static final Dimension LARGE_SHOP = new Dimension(900, 760);
public static final Dimension CHART = new Dimension(760, 560); public static final Dimension CHART = new Dimension(760, 560);
public static final Dimension MAP_SIZE = new Dimension(760, 450); public static final Dimension MAP_SIZE = new Dimension(760, 450);
public static final Dimension UPDATE_ONLINE_SIZE = new Dimension(600,300); public static final Dimension UPDATE_ONLINE_SIZE = new Dimension(600,300);

766
designer_base/src/com/fr/design/dialog/BasicPane.java

@ -16,380 +16,414 @@ import java.awt.*;
*/ */
public abstract class BasicPane extends JPanel { public abstract class BasicPane extends JPanel {
/** /**
*显示窗口 * 显示窗口
* @param window 窗口
* @return 对话框
*/
public BasicDialog showWindow(Window window) {
return this.showWindow(window, null);
}
/**
* 显示窗口
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public BasicDialog showWindow(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.DEFAULT);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
* @param window 窗口
* @param isNeedButtonsPane 是否需要确定删除按钮
* @return 对话框
*/
public BasicDialog showWindow(Window window, boolean isNeedButtonsPane) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window, isNeedButtonsPane);
} else {
dg = new DIALOG((Dialog) window, isNeedButtonsPane);
}
dg.setBasicDialogSize(BasicDialog.DEFAULT);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 图表类型选择时 弹出的按钮大小, 不适合用最大最小, 因为图表大小 默认是规定好的, 那么界面大小也是必须配合.
* 并且包括 条件显示中 多个条件的大小
* @param window 窗口
* @param l 监听器
* @return 对话框
*/
public BasicDialog showWindow4ChartType(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.CHART);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public BasicDialog showSmallWindow(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.SMALL);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public BasicDialog showMediumWindow(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.MEDIUM);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public BasicDialog showLargeWindow(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.LARGE);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public UIDialog showUnsizedWindow(Window window, DialogActionListener l) {
UIDialog dg;
if (window instanceof Frame) {
dg = new UnsizedDialog((Frame) window);
} else {
dg = new UnsizedDialog((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public BasicDialog showWindow4ChartMapArray(Window window,DialogActionListener l){
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.MAP_SIZE);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
* @param window 窗口
* @return 对话框
*/
public BasicDialog showWindow4UpdateOnline(Window window){
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window,false);
} else {
dg = new DIALOG((Dialog) window,false);
}
dg.setBasicDialogSize(BasicDialog.UPDATE_ONLINE_SIZE);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
protected abstract String title4PopupWindow();
public String getTitle(){
return title4PopupWindow();
}
/**
* 作为名字面板
* @return 面板
*/
public NamePane asNamePane() {
return new NamePane(this);
}
/**
* 检查是否符合规范
* *
* @throws Exception 异常 * @param window 窗口
*/ * @return 对话框
public void checkValid() throws Exception { */
} public BasicDialog showWindow(Window window) {
return this.showWindow(window, null);
public static final class NamePane extends BasicPane { }
private UITextField nameTextField;
private BasicPane centerPane;
private UILabel showfield;
private PropertyChangeAdapter changeListener;
private NamePane(BasicPane bPane) {
this.setLayout(new BorderLayout(4, 4));
nameTextField = new UITextField(30);
JPanel northPane = new JPanel(new BorderLayout(4, 4));
northPane.add(new UILabel(Inter.getLocText("FR-Designer-Hyperlink_Name") + ":"), BorderLayout.WEST);
northPane.add(nameTextField, BorderLayout.CENTER);
northPane.add(showfield = new UILabel(" "), BorderLayout.EAST);
showfield.setForeground(new Color(204, 0, 1));
showfield.setPreferredSize(new Dimension(220, showfield.getPreferredSize().height));
this.add(northPane, BorderLayout.NORTH);
this.centerPane = bPane;
this.add(bPane, BorderLayout.CENTER);
this.nameTextField.getDocument().addDocumentListener(new javax.swing.event.DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
doTextChanged();
}
@Override
public void removeUpdate(DocumentEvent e) {
doTextChanged();
}
@Override
public void changedUpdate(DocumentEvent e) {
doTextChanged();
}
});
}
private void doTextChanged() {
if (changeListener != null) {
changeListener.propertyChange();
}
}
public String getObjectName() {
return this.nameTextField.getText().trim();
}
public void setObjectName(String name) {
this.nameTextField.setText(name);
}
public void setShowText(String name) {
this.showfield.setText(name);
}
@Override
protected String title4PopupWindow() {
return centerPane.title4PopupWindow();
}
/**
* 检查是否符合规范
*
* @throws Exception 异常
*/
public void checkValid() throws Exception {
super.checkValid();
this.centerPane.checkValid();
}
/**
* 添加属性改变的监听器
* @param listener 监听器
*/
public void addPropertyChangeListener(PropertyChangeAdapter listener) {
this.changeListener = listener;
}
}
private class DIALOG extends BasicDialog {
public DIALOG(Frame parent) {
super(parent, BasicPane.this);
this.setTitle(BasicPane.this.title4PopupWindow());
}
public DIALOG(Dialog parent) {
super(parent, BasicPane.this);
this.setTitle(BasicPane.this.title4PopupWindow());
}
public DIALOG(Frame parent, boolean isNeedButtonPane) {
super(parent, BasicPane.this, isNeedButtonPane);
this.setTitle(BasicPane.this.title4PopupWindow());
}
public DIALOG(Dialog parent, boolean isNeedButtonPane) {
super(parent, BasicPane.this, isNeedButtonPane);
this.setTitle(BasicPane.this.title4PopupWindow());
}
/**
* init Components
*/
/**
* Check valid.
*/
public void checkValid() throws Exception {
BasicPane.this.checkValid();
}
}
private class UnsizedDialog extends UIDialog { /**
* 显示窗口
*
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public BasicDialog showWindow(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.DEFAULT);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
*
* @param window 窗口
* @param isNeedButtonsPane 是否需要确定删除按钮
* @return 对话框
*/
public BasicDialog showWindow(Window window, boolean isNeedButtonsPane) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window, isNeedButtonsPane);
} else {
dg = new DIALOG((Dialog) window, isNeedButtonsPane);
}
dg.setBasicDialogSize(BasicDialog.DEFAULT);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 图表类型选择时 弹出的按钮大小, 不适合用最大最小, 因为图表大小 默认是规定好的, 那么界面大小也是必须配合.
* 并且包括 条件显示中 多个条件的大小
*
* @param window 窗口
* @param l 监听器
* @return 对话框
*/
public BasicDialog showWindow4ChartType(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.CHART);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
*
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public BasicDialog showSmallWindow(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.SMALL);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
*
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public BasicDialog showMediumWindow(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.MEDIUM);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
*
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public BasicDialog showLargeWindow(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.LARGE);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示自定义大小的窗口
*
* @param window 窗口
* @param l 对话框监听器
* @param dimension 窗口大小
* @return 对话框
*/
public BasicDialog showCustomSizeWindow(Window window, DialogActionListener l, Dimension dimension) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(dimension);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
*
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public UIDialog showUnsizedWindow(Window window, DialogActionListener l) {
UIDialog dg;
if (window instanceof Frame) {
dg = new UnsizedDialog((Frame) window);
} else {
dg = new UnsizedDialog((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
*
* @param window 窗口
* @param l 对话框监听器
* @return 对话框
*/
public BasicDialog showWindow4ChartMapArray(Window window, DialogActionListener l) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window);
} else {
dg = new DIALOG((Dialog) window);
}
if (l != null) {
dg.addDialogActionListener(l);
}
dg.setBasicDialogSize(BasicDialog.MAP_SIZE);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
/**
* 显示窗口
*
* @param window 窗口
* @return 对话框
*/
public BasicDialog showWindow4UpdateOnline(Window window) {
BasicDialog dg;
if (window instanceof Frame) {
dg = new DIALOG((Frame) window, false);
} else {
dg = new DIALOG((Dialog) window, false);
}
dg.setBasicDialogSize(BasicDialog.UPDATE_ONLINE_SIZE);
GUICoreUtils.centerWindow(dg);
dg.setResizable(false);
return dg;
}
protected abstract String title4PopupWindow();
public String getTitle() {
return title4PopupWindow();
}
/**
* 作为名字面板
*
* @return 面板
*/
public NamePane asNamePane() {
return new NamePane(this);
}
public UnsizedDialog(Frame parent) { /**
super(parent, BasicPane.this); * 检查是否符合规范
this.setTitle(BasicPane.this.title4PopupWindow()); *
} * @throws Exception 异常
*/
public void checkValid() throws Exception {
}
public static final class NamePane extends BasicPane {
private UITextField nameTextField;
private BasicPane centerPane;
private UILabel showfield;
private PropertyChangeAdapter changeListener;
private NamePane(BasicPane bPane) {
this.setLayout(new BorderLayout(4, 4));
nameTextField = new UITextField(30);
JPanel northPane = new JPanel(new BorderLayout(4, 4));
northPane.add(new UILabel(Inter.getLocText("FR-Designer-Hyperlink_Name") + ":"), BorderLayout.WEST);
northPane.add(nameTextField, BorderLayout.CENTER);
northPane.add(showfield = new UILabel(" "), BorderLayout.EAST);
showfield.setForeground(new Color(204, 0, 1));
showfield.setPreferredSize(new Dimension(220, showfield.getPreferredSize().height));
this.add(northPane, BorderLayout.NORTH);
this.centerPane = bPane;
this.add(bPane, BorderLayout.CENTER);
this.nameTextField.getDocument().addDocumentListener(new javax.swing.event.DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
doTextChanged();
}
@Override
public void removeUpdate(DocumentEvent e) {
doTextChanged();
}
@Override
public void changedUpdate(DocumentEvent e) {
doTextChanged();
}
});
}
private void doTextChanged() {
if (changeListener != null) {
changeListener.propertyChange();
}
}
public String getObjectName() {
return this.nameTextField.getText().trim();
}
public void setObjectName(String name) {
this.nameTextField.setText(name);
}
public void setShowText(String name) {
this.showfield.setText(name);
}
@Override
protected String title4PopupWindow() {
return centerPane.title4PopupWindow();
}
/**
* 检查是否符合规范
*
* @throws Exception 异常
*/
public void checkValid() throws Exception {
super.checkValid();
this.centerPane.checkValid();
}
/**
* 添加属性改变的监听器
*
* @param listener 监听器
*/
public void addPropertyChangeListener(PropertyChangeAdapter listener) {
this.changeListener = listener;
}
}
private class DIALOG extends BasicDialog {
public DIALOG(Frame parent) {
super(parent, BasicPane.this);
this.setTitle(BasicPane.this.title4PopupWindow());
}
public DIALOG(Dialog parent) {
super(parent, BasicPane.this);
this.setTitle(BasicPane.this.title4PopupWindow());
}
public DIALOG(Frame parent, boolean isNeedButtonPane) {
super(parent, BasicPane.this, isNeedButtonPane);
this.setTitle(BasicPane.this.title4PopupWindow());
}
public DIALOG(Dialog parent, boolean isNeedButtonPane) {
super(parent, BasicPane.this, isNeedButtonPane);
this.setTitle(BasicPane.this.title4PopupWindow());
}
/**
* init Components
*/
/**
* Check valid.
*/
public void checkValid() throws Exception {
BasicPane.this.checkValid();
}
}
public UnsizedDialog(Dialog parent) { private class UnsizedDialog extends UIDialog {
super(parent, BasicPane.this);
this.setTitle(BasicPane.this.title4PopupWindow()); public UnsizedDialog(Frame parent) {
} super(parent, BasicPane.this);
this.setTitle(BasicPane.this.title4PopupWindow());
}
public UnsizedDialog(Dialog parent) {
super(parent, BasicPane.this);
this.setTitle(BasicPane.this.title4PopupWindow());
}
public void checkValid() throws Exception { public void checkValid() throws Exception {
BasicPane.this.checkValid(); BasicPane.this.checkValid();
} }
} }
} }

25
designer_base/src/com/fr/design/extra/PluginWebBridge.java

@ -1,6 +1,8 @@
package com.fr.design.extra; package com.fr.design.extra;
import com.fr.design.extra.exe.*; import com.fr.design.extra.exe.*;
import com.fr.general.FRLogger;
import com.fr.general.http.HttpClient;
import com.fr.json.JSONArray; import com.fr.json.JSONArray;
import com.fr.json.JSONObject; import com.fr.json.JSONObject;
import com.fr.plugin.Plugin; import com.fr.plugin.Plugin;
@ -157,6 +159,7 @@ public class PluginWebBridge {
/** /**
* 获取已经安装的插件的数组 * 获取已经安装的插件的数组
*
* @return 已安装的插件组成的数组 * @return 已安装的插件组成的数组
*/ */
public Plugin[] getInstalledPlugins() { public Plugin[] getInstalledPlugins() {
@ -174,4 +177,26 @@ public class PluginWebBridge {
} }
return list.toArray(new String[len]); return list.toArray(new String[len]);
} }
public String getPluginFromStore(String category, String seller, String fee) {
StringBuilder url = new StringBuilder("http://127.0.0.1:8080/ShopServer?pg=plist");
if(StringUtils.isNotBlank(category)){
url.append("&cid=").append(category.split("-")[1]);
}
if(StringUtils.isNotBlank(seller)){
url.append("&seller=").append(seller.split("-")[1]);
}
if(StringUtils.isNotBlank(fee)){
url.append("&fee=").append(fee.split("-")[1]);
}
String resText = null;
try {
HttpClient httpClient = new HttpClient(url.toString());
resText = httpClient.getResponseText();
} catch (Exception e) {
FRLogger.getLogger().error(e.getMessage());
}
return resText == null ? StringUtils.EMPTY : resText;
}
} }

5
designer_base/src/com/fr/design/extra/PluginWebPane.java

@ -5,6 +5,7 @@ import javafx.embed.swing.JFXPanel;
import javafx.event.EventHandler; import javafx.event.EventHandler;
import javafx.scene.Group; import javafx.scene.Group;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.WebEngine; import javafx.scene.web.WebEngine;
import javafx.scene.web.WebEvent; import javafx.scene.web.WebEvent;
import javafx.scene.web.WebView; import javafx.scene.web.WebView;
@ -24,7 +25,7 @@ public class PluginWebPane extends JFXPanel {
Platform.runLater(new Runnable() { Platform.runLater(new Runnable() {
@Override @Override
public void run() { public void run() {
Group root = new Group(); BorderPane root = new BorderPane();
Scene scene = new Scene(root); Scene scene = new Scene(root);
PluginWebPane.this.setScene(scene); PluginWebPane.this.setScene(scene);
WebView webView = new WebView(); WebView webView = new WebView();
@ -38,7 +39,7 @@ public class PluginWebPane extends JFXPanel {
}); });
JSObject obj = (JSObject) webEngine.executeScript("window"); JSObject obj = (JSObject) webEngine.executeScript("window");
obj.setMember("PluginHelper", PluginWebBridge.getHelper(webEngine)); obj.setMember("PluginHelper", PluginWebBridge.getHelper(webEngine));
root.getChildren().add(webView); root.setCenter(webView);
} }
}); });
} }

Loading…
Cancel
Save