|
|
|
@ -19,8 +19,10 @@ import com.fr.design.utils.gui.GUICoreUtils;
|
|
|
|
|
import com.fr.form.share.ShareConstants; |
|
|
|
|
import com.fr.form.share.ShareLoader; |
|
|
|
|
import com.fr.form.ui.ElCaseBindInfo; |
|
|
|
|
import com.fr.general.FRLogger; |
|
|
|
|
import com.fr.general.Inter; |
|
|
|
|
import com.fr.general.SiteCenter; |
|
|
|
|
import com.fr.stable.ArrayUtils; |
|
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
|
|
|
|
|
|
import javax.swing.*; |
|
|
|
@ -44,13 +46,15 @@ import java.net.URISyntaxException;
|
|
|
|
|
public class FormWidgetDetailPane extends FormDockView{ |
|
|
|
|
|
|
|
|
|
private UITabbedPane tabbedPane; |
|
|
|
|
private UIScrollPane downPanel; |
|
|
|
|
private UIScrollPane downPane; |
|
|
|
|
private JPanel reuWidgetPanel; |
|
|
|
|
private UIComboBox comboBox; |
|
|
|
|
private ElCaseBindInfo[] elCaseBindInfoList; |
|
|
|
|
private UIButton downloadButton; |
|
|
|
|
private UIButton refreshButton; |
|
|
|
|
private UIButton deleteButton; |
|
|
|
|
private UIButton resetButton; |
|
|
|
|
private JPanel editPanel; |
|
|
|
|
private JPanel resetPanel; |
|
|
|
|
private JPanel menutPanel; |
|
|
|
|
private static final int OFFSET_X = 140; |
|
|
|
|
private static final int OFFSET_Y = 26; |
|
|
|
|
private SwingWorker sw; |
|
|
|
@ -114,8 +118,6 @@ public class FormWidgetDetailPane extends FormDockView{
|
|
|
|
|
sw.execute(); |
|
|
|
|
} |
|
|
|
|
initReuWidgetPanel(); |
|
|
|
|
createRefreshButton(); |
|
|
|
|
createDownloadButton(); |
|
|
|
|
initMenuPanel(); |
|
|
|
|
tabbedPane = new UITabbedPane(); |
|
|
|
|
tabbedPane.setOpaque(true); |
|
|
|
@ -131,34 +133,68 @@ public class FormWidgetDetailPane extends FormDockView{
|
|
|
|
|
* 初始化组件共享和复用面板 |
|
|
|
|
*/ |
|
|
|
|
private void initReuWidgetPanel() { |
|
|
|
|
downPanel = new UIScrollPane(new ShareWidgetPane(elCaseBindInfoList, false)); |
|
|
|
|
reuWidgetPanel.add(downPanel); |
|
|
|
|
downPane = new UIScrollPane(new ShareWidgetPane(elCaseBindInfoList, false)); |
|
|
|
|
reuWidgetPanel.add(downPane); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 初始化菜单栏面板 |
|
|
|
|
*/ |
|
|
|
|
private void initMenuPanel() { |
|
|
|
|
JPanel menutPane = new JPanel(); |
|
|
|
|
menutPane.setLayout(FRGUIPaneFactory.createBorderLayout()); |
|
|
|
|
menutPane.setBorder(BorderFactory.createEmptyBorder(3, 8, 3, 3)); |
|
|
|
|
menutPane.setPreferredSize(new Dimension(240, 48)); |
|
|
|
|
menutPane.add(new UILabel(Inter.getLocText("FR-Designer_LocalWidget"), |
|
|
|
|
menutPanel = new JPanel(); |
|
|
|
|
menutPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); |
|
|
|
|
menutPanel.setBorder(BorderFactory.createEmptyBorder(3, 8, 3, 3)); |
|
|
|
|
menutPanel.setPreferredSize(new Dimension(240, 48)); |
|
|
|
|
menutPanel.add(new UILabel(Inter.getLocText("FR-Designer_LocalWidget"), |
|
|
|
|
SwingConstants.HORIZONTAL), BorderLayout.WEST); |
|
|
|
|
JPanel buttonPanel = new JPanel(); |
|
|
|
|
buttonPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); |
|
|
|
|
buttonPanel.add(refreshButton, BorderLayout.WEST); |
|
|
|
|
buttonPanel.add(downloadButton, BorderLayout.EAST); |
|
|
|
|
menutPane.add(buttonPanel, BorderLayout.EAST); |
|
|
|
|
menutPane.add(new JPanel(), BorderLayout.CENTER); |
|
|
|
|
|
|
|
|
|
menutPanel.add(initEditButtonPane(), BorderLayout.EAST); |
|
|
|
|
menutPanel.add(new JPanel(), BorderLayout.CENTER); |
|
|
|
|
comboBox = new UIComboBox(getFormCategories()); |
|
|
|
|
comboBox.setPreferredSize(new Dimension(240, 30)); |
|
|
|
|
initComboBoxSelectedListener(); |
|
|
|
|
menutPane.add(comboBox, BorderLayout.SOUTH); |
|
|
|
|
reuWidgetPanel.add(menutPane, BorderLayout.NORTH); |
|
|
|
|
menutPanel.add(comboBox, BorderLayout.SOUTH); |
|
|
|
|
reuWidgetPanel.add(menutPanel, BorderLayout.NORTH); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 创建菜单栏按钮面板 |
|
|
|
|
*/ |
|
|
|
|
private JPanel initEditButtonPane() { |
|
|
|
|
editPanel = new JPanel(); |
|
|
|
|
editPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); |
|
|
|
|
editPanel.add(createRefreshButton(), BorderLayout.WEST); |
|
|
|
|
editPanel.add(createDownloadButton(), BorderLayout.EAST); |
|
|
|
|
return editPanel; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 创建取消删除面板 |
|
|
|
|
*/ |
|
|
|
|
private JPanel initResetButtonPane() { |
|
|
|
|
resetPanel = new JPanel(); |
|
|
|
|
resetButton = new UIButton(Inter.getLocText("FR-Designer_Reset")); |
|
|
|
|
resetPanel.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); |
|
|
|
|
resetButton.set4ToolbarButton(); |
|
|
|
|
resetButton.setOpaque(true); |
|
|
|
|
resetButton.setBackground(new Color(184, 220, 242)); |
|
|
|
|
resetButton.setForeground(Color.WHITE); |
|
|
|
|
resetButton.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
refreshDownPanel(false); |
|
|
|
|
replaceButtonPanel(false); |
|
|
|
|
reuWidgetPanel.remove(deleteButton); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
resetPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); |
|
|
|
|
resetPanel.add(resetButton, BorderLayout.CENTER); |
|
|
|
|
return resetPanel; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void initComboBoxSelectedListener() { |
|
|
|
|
comboBox.addItemListener(new ItemListener() { |
|
|
|
|
@Override |
|
|
|
@ -176,8 +212,11 @@ public class FormWidgetDetailPane extends FormDockView{
|
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void createRefreshButton() { |
|
|
|
|
refreshButton = new UIButton(); |
|
|
|
|
/** |
|
|
|
|
* 创建刷新按钮 |
|
|
|
|
*/ |
|
|
|
|
private UIButton createRefreshButton() { |
|
|
|
|
UIButton refreshButton = new UIButton(); |
|
|
|
|
refreshButton.setIcon(BaseUtils.readIcon("/com/fr/design/form/images/refresh.png")); |
|
|
|
|
refreshButton.setToolTipText(Inter.getLocText("FR-Designer_Refresh")); |
|
|
|
|
refreshButton.set4ToolbarButton(); |
|
|
|
@ -192,6 +231,7 @@ public class FormWidgetDetailPane extends FormDockView{
|
|
|
|
|
protected Object doInBackground() throws Exception { |
|
|
|
|
ShareLoader.getLoader().refreshModule(); |
|
|
|
|
elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); |
|
|
|
|
comboBox.setSelectedIndex(0); |
|
|
|
|
refreshDownPanel(false); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
@ -199,99 +239,100 @@ public class FormWidgetDetailPane extends FormDockView{
|
|
|
|
|
sw.execute(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
return refreshButton; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 创建下载模板的按钮 |
|
|
|
|
*/ |
|
|
|
|
private void createDownloadButton() { |
|
|
|
|
downloadButton = new UIButton(); |
|
|
|
|
private UIButton createDownloadButton() { |
|
|
|
|
UIButton downloadButton = new UIButton(); |
|
|
|
|
downloadButton.setIcon(BaseUtils.readIcon("/com/fr/design/form/images/showmenu.png")); |
|
|
|
|
downloadButton.set4ToolbarButton(); |
|
|
|
|
downloadButton.setToolTipText(Inter.getLocText("FR-Designer_Download_Template")); |
|
|
|
|
downloadButton.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
UIPopupMenu menu = new UIPopupMenu(); |
|
|
|
|
UIMenuItem downloadItem = new UIMenuItem(Inter.getLocText("FR-Designer_Download_Template"), BaseUtils.readIcon("/com/fr/design/form/images/download icon.png")); |
|
|
|
|
UIMenuItem installItem = new UIMenuItem(Inter.getLocText("FR-Designer_Install_Template"), BaseUtils.readIcon("/com/fr/design/form/images/install icon.png")); |
|
|
|
|
UIMenuItem deleteItem = new UIMenuItem(Inter.getLocText("FR-Designer_Delete_Template"), BaseUtils.readIcon("/com/fr/design/form/images/delete icon.png")); |
|
|
|
|
|
|
|
|
|
menu.add(downloadItem); |
|
|
|
|
menu.add(installItem); |
|
|
|
|
menu.add(deleteItem); |
|
|
|
|
|
|
|
|
|
downloadItem.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
String url = SiteCenter.getInstance().acquireUrlByKind("reuse.url"); |
|
|
|
|
if (StringUtils.isEmpty(url)) { |
|
|
|
|
FRContext.getLogger().info("The URL is empty!"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
try { |
|
|
|
|
Desktop.getDesktop().browse(new URI(url)); |
|
|
|
|
} catch (IOException exp) { |
|
|
|
|
JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); |
|
|
|
|
FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); |
|
|
|
|
} catch (URISyntaxException exp) { |
|
|
|
|
FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); |
|
|
|
|
} catch (Exception exp) { |
|
|
|
|
FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); |
|
|
|
|
FRContext.getLogger().error("Can not open the browser for URL: " + url); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
installItem.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
JFileChooser fileChooser = new JFileChooser(); |
|
|
|
|
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); |
|
|
|
|
fileChooser.setFileFilter(new FileNameExtensionFilter(".reu", "reu")); |
|
|
|
|
int returnValue = fileChooser.showDialog(new JLabel(), Inter.getLocText("FR-Designer_Select")); |
|
|
|
|
if (returnValue == JFileChooser.APPROVE_OPTION) { |
|
|
|
|
final File chosenFile = fileChooser.getSelectedFile(); |
|
|
|
|
installFromDiskZipFile(chosenFile); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
deleteItem.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
deleteFromDiskZipFile(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
GUICoreUtils.showPopupMenu(menu, tabbedPane, tabbedPane.getX() + OFFSET_X, OFFSET_Y); |
|
|
|
|
initPopMenu(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
return downloadButton; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 初始化下拉面板 |
|
|
|
|
*/ |
|
|
|
|
private void initPopMenu() { |
|
|
|
|
UIPopupMenu menu = new UIPopupMenu(); |
|
|
|
|
UIMenuItem downloadItem = new UIMenuItem(Inter.getLocText("FR-Designer_Download_Template"), BaseUtils.readIcon("/com/fr/design/form/images/download icon.png")); |
|
|
|
|
UIMenuItem installItem = new UIMenuItem(Inter.getLocText("FR-Designer_Install_Template"), BaseUtils.readIcon("/com/fr/design/form/images/install icon.png")); |
|
|
|
|
UIMenuItem deleteItem = new UIMenuItem(Inter.getLocText("FR-Designer_Delete_Template"), BaseUtils.readIcon("/com/fr/design/form/images/delete icon.png")); |
|
|
|
|
menu.add(downloadItem); |
|
|
|
|
menu.add(installItem); |
|
|
|
|
menu.add(deleteItem); |
|
|
|
|
downloadItem.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
String url = SiteCenter.getInstance().acquireUrlByKind("reuse.url"); |
|
|
|
|
if (StringUtils.isEmpty(url)) { |
|
|
|
|
FRContext.getLogger().info("The URL is empty!"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
try { |
|
|
|
|
Desktop.getDesktop().browse(new URI(url)); |
|
|
|
|
} catch (IOException exp) { |
|
|
|
|
JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); |
|
|
|
|
FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); |
|
|
|
|
} catch (URISyntaxException exp) { |
|
|
|
|
FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); |
|
|
|
|
} catch (Exception exp) { |
|
|
|
|
FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); |
|
|
|
|
FRContext.getLogger().error("Can not open the browser for URL: " + url); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
installItem.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
JFileChooser fileChooser = new JFileChooser(); |
|
|
|
|
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); |
|
|
|
|
fileChooser.setFileFilter(new FileNameExtensionFilter(".reu", "reu")); |
|
|
|
|
int returnValue = fileChooser.showDialog(new UILabel(), Inter.getLocText("FR-Designer_Select")); |
|
|
|
|
if (returnValue == JFileChooser.APPROVE_OPTION) { |
|
|
|
|
final File chosenFile = fileChooser.getSelectedFile(); |
|
|
|
|
installFromDiskZipFile(chosenFile); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
deleteItem.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
replaceButtonPanel(true); |
|
|
|
|
deleteFromDiskZipFile(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
GUICoreUtils.showPopupMenu(menu, tabbedPane, tabbedPane.getX() + OFFSET_X, OFFSET_Y); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void deleteFromDiskZipFile() { |
|
|
|
|
deleteButton = new UIButton(Inter.getLocText("FR-Designer-CommitTab_Remove")); |
|
|
|
|
deleteButton.setOpaque(true); |
|
|
|
|
deleteButton.setBackground(Color.red); |
|
|
|
|
deleteButton.repaint(); |
|
|
|
|
deleteButton.setPreferredSize(new Dimension(240, 40)); |
|
|
|
|
reuWidgetPanel.add(deleteButton, BorderLayout.SOUTH); |
|
|
|
|
deleteButton.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
if(ShareLoader.getLoader().removeModulesFromList()) { |
|
|
|
|
if (ShareLoader.getLoader().removeModulesFromList()) { |
|
|
|
|
refreshShareMoudule(); |
|
|
|
|
reuWidgetPanel.remove(deleteButton); |
|
|
|
|
elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); |
|
|
|
|
JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Successful")); |
|
|
|
|
refreshDownPanel(false); |
|
|
|
|
replaceButtonPanel(false); |
|
|
|
|
} else { |
|
|
|
|
reuWidgetPanel.remove(deleteButton); |
|
|
|
|
JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Failed")); |
|
|
|
|
refreshDownPanel(false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
@ -300,6 +341,19 @@ public class FormWidgetDetailPane extends FormDockView{
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void replaceButtonPanel(boolean isEdit) { |
|
|
|
|
if (isEdit) { |
|
|
|
|
menutPanel.remove(editPanel); |
|
|
|
|
menutPanel.add(initResetButtonPane(), BorderLayout.EAST); |
|
|
|
|
} else { |
|
|
|
|
menutPanel.remove(resetPanel); |
|
|
|
|
menutPanel.add(initEditButtonPane(), BorderLayout.EAST); |
|
|
|
|
ShareLoader.getLoader().resetRemovedModuleList(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void installFromDiskZipFile(File chosenFile) { |
|
|
|
|
try { |
|
|
|
|
ShareLoader.getLoader().installModuleFromDiskZipFile(chosenFile); |
|
|
|
@ -309,7 +363,7 @@ public class FormWidgetDetailPane extends FormDockView{
|
|
|
|
|
JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_OK")); |
|
|
|
|
} catch (IOException e) { |
|
|
|
|
JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Error")); |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
FRLogger.getLogger().error(e.getMessage(), e); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
@ -318,7 +372,7 @@ public class FormWidgetDetailPane extends FormDockView{
|
|
|
|
|
try { |
|
|
|
|
ShareLoader.getLoader().refreshModule(); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
FRLogger.getLogger().error(e.getMessage(), e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -326,15 +380,15 @@ public class FormWidgetDetailPane extends FormDockView{
|
|
|
|
|
* 获取报表块组件分类 |
|
|
|
|
*/ |
|
|
|
|
public String[] getFormCategories() { |
|
|
|
|
return ShareConstants.WIDGET_CATEGORIES; |
|
|
|
|
return ArrayUtils.addAll(new String[] {Inter.getLocText("FR-Designer_AllCategories")}, ShareLoader.getLoader().getModuleCategory()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void refreshDownPanel(boolean isEdit) { |
|
|
|
|
reuWidgetPanel.remove(downPanel); |
|
|
|
|
downPanel = new UIScrollPane(new ShareWidgetPane(elCaseBindInfoList, isEdit)); |
|
|
|
|
reuWidgetPanel.add(downPanel); |
|
|
|
|
reuWidgetPanel.remove(downPane); |
|
|
|
|
downPane = new UIScrollPane(new ShareWidgetPane(elCaseBindInfoList, isEdit)); |
|
|
|
|
reuWidgetPanel.add(downPane); |
|
|
|
|
repaintContainer(); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|