forked from fanruan/design
Browse Source
* commit 'b7343f7b9927e900060ba02a0935c17970141686': REPORT-1344 表单报表块翻页改进并增加局部导出 REPORT-1344 表单报表块翻页改进并增加局部导出 REPORT-1344 表单报表块翻页改进并增加局部导出 REPORT-1344 表单报表块翻页改进并增加局部导出 REPORT-1344 表单报表块翻页改进并增加局部导出master
19 changed files with 1538 additions and 10 deletions
@ -0,0 +1,481 @@
|
||||
package com.fr.design.mainframe; |
||||
|
||||
import com.fr.design.actions.UpdateAction; |
||||
import com.fr.design.dialog.BasicDialog; |
||||
import com.fr.design.dialog.BasicPane; |
||||
import com.fr.design.dialog.DialogActionAdapter; |
||||
import com.fr.design.gui.ibutton.UIButton; |
||||
import com.fr.design.gui.icheckbox.UICheckBox; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.itextfield.UITextField; |
||||
import com.fr.design.gui.itoolbar.UIToolbar; |
||||
import com.fr.design.javascript.JavaScriptActionPane; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.layout.TableLayout; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.design.menu.ToolBarDef; |
||||
import com.fr.design.style.background.BackgroundPane; |
||||
import com.fr.design.utils.gui.GUICoreUtils; |
||||
import com.fr.design.widget.IconDefinePane; |
||||
import com.fr.form.ui.*; |
||||
import com.fr.form.ui.Button; |
||||
import com.fr.form.web.button.Export; |
||||
import com.fr.general.Background; |
||||
import com.fr.general.IOUtils; |
||||
import com.fr.general.Inter; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import javax.swing.*; |
||||
import javax.swing.event.ListSelectionEvent; |
||||
import javax.swing.event.ListSelectionListener; |
||||
import java.awt.*; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
import java.util.*; |
||||
|
||||
/** |
||||
* Created by harry on 2017-3-2. |
||||
*/ |
||||
public class FormEditToolBar extends BasicPane { |
||||
|
||||
private JList list; |
||||
private DefaultListModel listModel; |
||||
private JPanel right; |
||||
private CardLayout card; |
||||
private ButtonPane bp; |
||||
private FormToolBarButton lastButton; |
||||
private Background background = null; |
||||
private UICheckBox defaultCheckBox; |
||||
|
||||
private ListSelectionListener listSelectionListener = new ListSelectionListener() { |
||||
public void valueChanged(ListSelectionEvent evt) { |
||||
if (lastButton != null) { |
||||
lastButton.setWidget(bp.update()); |
||||
} |
||||
if (list.getSelectedValue() instanceof FormToolBarButton) { |
||||
lastButton = (FormToolBarButton) list.getSelectedValue(); |
||||
if (lastButton.getWidget() instanceof Button) { |
||||
card.show(right, "button"); |
||||
bp.populate(lastButton.getWidget()); |
||||
} else { |
||||
bp.populate(lastButton.getWidget()); |
||||
card.show(right, "none"); |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
|
||||
|
||||
private ActionListener actioner = new ActionListener() { |
||||
/** |
||||
* |
||||
*/ |
||||
public void actionPerformed(ActionEvent arg0) { |
||||
final BackgroundPane backgroundPane = new BackgroundPane(); |
||||
BasicDialog dialog = backgroundPane.showWindow(DesignerContext.getDesignerFrame()); |
||||
backgroundPane.populate(FormEditToolBar.this.background); |
||||
dialog.addDialogActionListener(new DialogActionAdapter() { |
||||
public void doOk() { |
||||
FormEditToolBar.this.background = backgroundPane.update(); |
||||
if (FormEditToolBar.this.background != null) { |
||||
FormEditToolBar.this.defaultCheckBox.setSelected(false); |
||||
} |
||||
} |
||||
}); |
||||
dialog.setVisible(true); |
||||
} |
||||
}; |
||||
|
||||
public FormEditToolBar() { |
||||
initComponent(); |
||||
} |
||||
|
||||
/** |
||||
* 初始化 |
||||
*/ |
||||
public void initComponent() { |
||||
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
JPanel left = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
listModel = new DefaultListModel(); |
||||
list = new JList(listModel); |
||||
list.setCellRenderer(render); |
||||
left.add(new JScrollPane(list), BorderLayout.CENTER); |
||||
if (listModel.getSize() > 0) { |
||||
list.setSelectedIndex(0); |
||||
} |
||||
|
||||
ToolBarDef toolbarDef = new ToolBarDef(); |
||||
toolbarDef.addShortCut(new MoveUpItemAction()); |
||||
toolbarDef.addShortCut(new MoveDownItemAction()); |
||||
toolbarDef.addShortCut(new RemoveAction()); |
||||
UIToolbar toolBar = ToolBarDef.createJToolBar(); |
||||
toolbarDef.updateToolBar(toolBar); |
||||
left.add(toolBar, BorderLayout.NORTH); |
||||
|
||||
right = FRGUIPaneFactory.createCardLayout_S_Pane(); |
||||
card = new CardLayout(); |
||||
right.setLayout(card); |
||||
bp = new ButtonPane(); |
||||
right.add("none", FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane()); |
||||
right.add("button", bp); |
||||
|
||||
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, left, right); |
||||
// splitPane.setDividerLocation(left.getMinimumSize().width);
|
||||
splitPane.setDividerLocation(120); |
||||
this.add(splitPane); |
||||
list.addListSelectionListener(listSelectionListener); |
||||
JPanel backgroundPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); |
||||
UIButton bgButton = new UIButton(Inter.getLocText("FR-Designer-Output_Background_Set")); |
||||
defaultCheckBox = new UICheckBox(Inter.getLocText("FR-Designer-Output_Default_Background")); |
||||
bgButton.addActionListener(actioner); |
||||
backgroundPane.add(defaultCheckBox); |
||||
backgroundPane.add(bgButton); |
||||
backgroundPane.setBorder(BorderFactory.createTitledBorder(Inter.getLocText("FR-Designer-Output_Background_Set"))); |
||||
this.add(backgroundPane, BorderLayout.SOUTH); |
||||
} |
||||
|
||||
ListCellRenderer render = new DefaultListCellRenderer() { |
||||
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { |
||||
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); |
||||
|
||||
if (value instanceof FormToolBarButton) { |
||||
FormToolBarButton button = (FormToolBarButton) value; |
||||
this.setText(button.getNameOption().optionName()); |
||||
this.setIcon(button.getNameOption().optionIcon()); |
||||
} |
||||
return this; |
||||
} |
||||
}; |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return Inter.getLocText("FR-Designer_Edit"); |
||||
} |
||||
|
||||
public void populate(FormToolBar ftoolbar) { |
||||
this.populate(ftoolbar, null); |
||||
} |
||||
|
||||
public void populate(FormToolBar ftoolbar, FormToolBarButton button) { |
||||
if (ftoolbar == null) { |
||||
return; |
||||
} |
||||
for (int i = 0; i < ftoolbar.getButtonlist().size(); i++) { |
||||
listModel.addElement(ftoolbar.getButtonlist().get(i)); |
||||
} |
||||
this.list.validate(); |
||||
this.list.repaint(); |
||||
if (ftoolbar.getButtonlist().size() > 0) { |
||||
this.list.setSelectedIndex(0); |
||||
} |
||||
if (button != null) { |
||||
this.list.setSelectedValue(button, true); |
||||
} |
||||
this.background = ftoolbar.getBackground(); |
||||
|
||||
this.defaultCheckBox.setSelected(ftoolbar.isDefault() ? true : false); |
||||
} |
||||
|
||||
public FormToolBar update() { |
||||
if (this.list.getSelectedIndex() > -1) { |
||||
for (int i = 0; i < listModel.getSize(); i++) { |
||||
this.list.setSelectedIndex(i); |
||||
FormToolBarButton toolBarButton = (FormToolBarButton) this.list.getSelectedValue(); |
||||
Widget widget = this.bp.update(); |
||||
toolBarButton.setWidget(widget); |
||||
if (widget instanceof Button) { |
||||
String iconname = ((Button) widget).getIconName(); |
||||
if (StringUtils.isNotBlank(iconname)) { |
||||
Image iimage = WidgetManager.getProviderInstance().getIconManager().getIconImage(iconname); |
||||
toolBarButton.setIcon(new ImageIcon(iimage)); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
java.util.List<FormToolBarButton> list = new ArrayList<FormToolBarButton>(); |
||||
for (int i = 0; i < listModel.size(); i++) { |
||||
list.add((FormToolBarButton) listModel.get(i)); |
||||
} |
||||
FormToolBar ftoolBar = new FormToolBar(); |
||||
ftoolBar.setButtonlist(list); |
||||
|
||||
ftoolBar.setDefault(this.defaultCheckBox.isSelected()); |
||||
if (!ftoolBar.isDefault()) { |
||||
ftoolBar.setBackground(this.background); |
||||
} |
||||
return ftoolBar; |
||||
} |
||||
|
||||
private class MoveUpItemAction extends UpdateAction { |
||||
public MoveUpItemAction() { |
||||
this.setName(Inter.getLocText("Utils-Move_Up")); |
||||
this.setMnemonic('U'); |
||||
this.setSmallIcon(IOUtils.readIcon("/com/fr/design/images/control/up.png")); |
||||
} |
||||
|
||||
/** |
||||
* |
||||
*/ |
||||
public void actionPerformed(ActionEvent evt) { |
||||
int selectedIndex = list.getSelectedIndex(); |
||||
if (selectedIndex == -1) { |
||||
return; |
||||
} |
||||
|
||||
// 上移
|
||||
if (selectedIndex > 0) { |
||||
DefaultListModel listModel = (DefaultListModel) list.getModel(); |
||||
|
||||
Object selecteObj1 = listModel.get(selectedIndex - 1); |
||||
listModel.set(selectedIndex - 1, listModel.get(selectedIndex)); |
||||
listModel.set(selectedIndex, selecteObj1); |
||||
|
||||
list.setSelectedIndex(selectedIndex - 1); |
||||
list.ensureIndexIsVisible(selectedIndex - 1); |
||||
list.validate(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
private class MoveDownItemAction extends UpdateAction { |
||||
public MoveDownItemAction() { |
||||
this.setName(Inter.getLocText("Utils-Move_Down")); |
||||
this.setMnemonic('D'); |
||||
this.setSmallIcon(IOUtils.readIcon("/com/fr/design/images/control/down.png")); |
||||
} |
||||
|
||||
/** |
||||
* |
||||
*/ |
||||
public void actionPerformed(ActionEvent evt) { |
||||
int selectedIndex = list.getSelectedIndex(); |
||||
if (selectedIndex == -1) { |
||||
return; |
||||
} |
||||
|
||||
// 下移
|
||||
if (selectedIndex == -1) { |
||||
return; |
||||
} |
||||
|
||||
if (selectedIndex < list.getModel().getSize() - 1) { |
||||
DefaultListModel listModel = (DefaultListModel) list.getModel(); |
||||
|
||||
Object selecteObj1 = listModel.get(selectedIndex + 1); |
||||
listModel.set(selectedIndex + 1, listModel.get(selectedIndex)); |
||||
listModel.set(selectedIndex, selecteObj1); |
||||
|
||||
list.setSelectedIndex(selectedIndex + 1); |
||||
list.ensureIndexIsVisible(selectedIndex + 1); |
||||
list.validate(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
public class RemoveAction extends UpdateAction { |
||||
public RemoveAction() { |
||||
this.setName(Inter.getLocText("FR-Designer_Delete")); |
||||
this.setSmallIcon(IOUtils.readIcon("/com/fr/base/images/cell/control/remove.png")); |
||||
} |
||||
|
||||
/** |
||||
* 动作 |
||||
* @param e 事件 |
||||
*/ |
||||
public void actionPerformed(ActionEvent e) { |
||||
int i = list.getSelectedIndex(); |
||||
if (i < 0 || !(listModel.getElementAt(i) instanceof FormToolBarButton)) { |
||||
return; |
||||
} |
||||
int val = JOptionPane.showConfirmDialog(FormEditToolBar.this, Inter.getLocText("FR-Designer_Are_You_Sure_To_Delete_The_Data") + "?", "Message", JOptionPane.YES_NO_OPTION); |
||||
if (val != JOptionPane.YES_OPTION) { |
||||
return; |
||||
} |
||||
listModel.removeElementAt(i); |
||||
list.validate(); |
||||
if (listModel.size() > 0) { |
||||
list.setSelectedIndex(0); |
||||
} else { |
||||
card.show(right, "none"); |
||||
} |
||||
} |
||||
} |
||||
|
||||
public class ButtonPane extends BasicPane { |
||||
private CardLayout card; |
||||
private JPanel centerPane; |
||||
private UICheckBox icon, text, excelP, excelO; |
||||
private Widget widget; |
||||
private UITextField nameField; |
||||
private IconDefinePane iconPane; |
||||
private UIButton button; |
||||
private JavaScriptActionPane javaScriptPane; |
||||
|
||||
public ButtonPane() { |
||||
this.initComponents(); |
||||
} |
||||
|
||||
/** |
||||
* 初始化元素 |
||||
*/ |
||||
public void initComponents() { |
||||
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
JPanel north = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
icon = new UICheckBox(Inter.getLocText("FR-Designer_Show_Icon")); |
||||
text = new UICheckBox(Inter.getLocText("FR-Designer_Show_Text")); |
||||
|
||||
north.add(icon, BorderLayout.NORTH); |
||||
north.add(text, BorderLayout.CENTER); |
||||
|
||||
nameField = new UITextField(8); |
||||
iconPane = new IconDefinePane(); |
||||
javaScriptPane = JavaScriptActionPane.createDefault(); |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double rowSize[] = {p, p}; |
||||
double columnSize[] = {p, p}; |
||||
|
||||
Component[][] coms = new Component[][]{{new UILabel(Inter.getLocText(new String[]{"Widget", "Printer-Alias"}) + ":"), nameField}, {new UILabel(Inter.getLocText(new String[]{"Widget", "Icon"}) + ":"), iconPane}}; |
||||
|
||||
JPanel nameIconPane = TableLayoutHelper.createTableLayoutPane(coms, rowSize, columnSize); |
||||
|
||||
north.add(nameIconPane, BorderLayout.SOUTH); |
||||
|
||||
north.setBorder(BorderFactory.createTitledBorder(Inter.getLocText(new String[]{"Form-Button", "Property", "Set"}))); |
||||
this.add(north, BorderLayout.NORTH); |
||||
JPanel none = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); |
||||
centerPane = FRGUIPaneFactory.createCardLayout_S_Pane(); |
||||
card = new CardLayout(); |
||||
centerPane.setLayout(card); |
||||
centerPane.add("custom", getCustomPane()); |
||||
centerPane.add("export", getExport()); |
||||
centerPane.add("none", none); |
||||
|
||||
this.add(centerPane, BorderLayout.CENTER); |
||||
} |
||||
|
||||
|
||||
private JPanel getCustomPane() { |
||||
JPanel customPane = FRGUIPaneFactory.createCenterFlowInnerContainer_S_Pane(); |
||||
|
||||
button = new UIButton(Inter.getLocText("FR-Designer_User_Defined_Event")); |
||||
customPane.add(button); |
||||
customPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("FR-Designer_Edit") + "JS", null)); |
||||
button.addActionListener(l); |
||||
return customPane; |
||||
} |
||||
|
||||
private JPanel getExport() { |
||||
JPanel export = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane(); |
||||
// export.setLayout(new BoxLayout(export, BoxLayout.Y_AXIS));
|
||||
excelP = new UICheckBox(Inter.getLocText("FR-Designer-Output_Excel_Page")); |
||||
excelO = new UICheckBox(Inter.getLocText("FR-Designer-Output_Excel_Simple")); |
||||
export.add(excelP); |
||||
export.add(Box.createVerticalStrut(2)); |
||||
export.add(excelO); |
||||
export.add(Box.createVerticalStrut(2)); |
||||
|
||||
export.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText(new String[]{"Form-Button", "Property", "Set"}), null)); |
||||
return export; |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "Button"; |
||||
} |
||||
|
||||
ActionListener l = new ActionListener() { |
||||
public void actionPerformed(ActionEvent e) { |
||||
if (!(widget instanceof CustomToolBarButton)) { |
||||
return; |
||||
} |
||||
if (javaScriptPane == null || ((CustomToolBarButton)widget).getJSImpl() == null) { |
||||
javaScriptPane = JavaScriptActionPane.createDefault(); |
||||
} |
||||
javaScriptPane.setPreferredSize(new Dimension(750, 500)); |
||||
BasicDialog dialog = javaScriptPane.showWindow(SwingUtilities.getWindowAncestor(ButtonPane.this)); |
||||
dialog.addDialogActionListener(new DialogActionAdapter() { |
||||
@Override |
||||
public void doOk() { |
||||
((CustomToolBarButton) widget).setJSImpl(javaScriptPane.updateBean()); |
||||
} |
||||
}); |
||||
dialog.setVisible(true); |
||||
} |
||||
}; |
||||
|
||||
/** |
||||
* 更新 |
||||
* @param widget 对应组件 |
||||
*/ |
||||
public void populate(Widget widget) { |
||||
this.widget = widget; |
||||
card.show(centerPane, "none"); |
||||
if (widget instanceof Button) { |
||||
populateDefault(); |
||||
} |
||||
if (widget instanceof Export) { |
||||
populateExport(); |
||||
} else if (widget instanceof CustomToolBarButton) { |
||||
populateCustomToolBarButton(); |
||||
} |
||||
} |
||||
|
||||
private void populateExport(){ |
||||
card.show(centerPane, "export"); |
||||
Export export = (Export) widget; |
||||
this.excelP.setSelected(export.isExcelPAvailable()); |
||||
this.excelO.setSelected(export.isExcelOAvailable()); |
||||
} |
||||
|
||||
private void populateCustomToolBarButton(){ |
||||
card.show(centerPane, "custom"); |
||||
CustomToolBarButton customToolBarButton = (CustomToolBarButton) widget; |
||||
if (customToolBarButton.getJSImpl() != null) { |
||||
this.javaScriptPane.populateBean(customToolBarButton.getJSImpl()); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
private void populateDefault(){ |
||||
Button button = (Button) widget; |
||||
this.icon.setSelected(button.isShowIcon()); |
||||
this.text.setSelected(button.isShowText()); |
||||
this.nameField.setText(button.getText()); |
||||
this.iconPane.populate(((Button) widget).getIconName()); |
||||
} |
||||
|
||||
/** |
||||
* 更新 |
||||
* |
||||
* @return 对应组件 |
||||
*/ |
||||
public Widget update() { |
||||
if (widget instanceof Export) { |
||||
updateExport(); |
||||
} else if (widget instanceof CustomToolBarButton) { |
||||
((CustomToolBarButton) widget).setJSImpl(this.javaScriptPane.updateBean()); |
||||
} |
||||
if (widget instanceof Button) { |
||||
updateDefault(); |
||||
} |
||||
|
||||
return widget; |
||||
} |
||||
|
||||
private void updateDefault(){ |
||||
((Button) widget).setShowIcon(this.icon.isSelected()); |
||||
((Button) widget).setShowText(this.text.isSelected()); |
||||
((Button) widget).setText(this.nameField.getText()); |
||||
((Button) widget).setIconName(this.iconPane.update()); |
||||
} |
||||
|
||||
|
||||
private void updateExport(){ |
||||
Export export = (Export) widget; |
||||
export.setExcelPAvailable(this.excelP.isSelected()); |
||||
export.setExcelOAvailable(this.excelO.isSelected()); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,84 @@
|
||||
package com.fr.design.mainframe; |
||||
|
||||
import com.fr.design.dialog.BasicDialog; |
||||
import com.fr.design.dialog.DialogActionAdapter; |
||||
import com.fr.design.gui.ibutton.UIButton; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.utils.gui.GUICoreUtils; |
||||
import com.fr.general.IOUtils; |
||||
import com.fr.general.Inter; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
|
||||
/** |
||||
* Created by harry on 2017-3-2. |
||||
*/ |
||||
public class FormSettingToolBar extends JPanel { |
||||
private Icon setIcon = IOUtils.readIcon("com/fr/design/images/toolbarbtn/toolbarbtnsetting.png"); |
||||
private Icon delIcon = IOUtils.readIcon("com/fr/design/images/toolbarbtn/toolbarbtnclear.png"); |
||||
private UIButton setButton; |
||||
private UIButton delButton; |
||||
private FormToolBarPane toolBarPane; |
||||
|
||||
public FormSettingToolBar(String name, FormToolBarPane toolBarPane) { |
||||
super(); |
||||
this.setBackground(Color.lightGray); |
||||
this.add(new UILabel(name)); |
||||
this.toolBarPane = toolBarPane; |
||||
setButton = GUICoreUtils.createTransparentButton(setIcon, setIcon, setIcon); |
||||
setButton.setToolTipText(Inter.getLocText("FR-Designer_Edit_Button_ToolBar")); |
||||
setButton.setAction(new SetAction()); |
||||
delButton = GUICoreUtils.createTransparentButton(delIcon, delIcon, delIcon); |
||||
delButton.setToolTipText(Inter.getLocText("FR-Designer_Remove_Button_ToolBar")); |
||||
delButton.setAction(new DelAction()); |
||||
this.add(setButton); |
||||
this.add(delButton); |
||||
} |
||||
|
||||
public void setEnabled(boolean b) { |
||||
setButton.setEnabled(b); |
||||
delButton.setEnabled(b); |
||||
} |
||||
|
||||
public void addActionListener(ActionListener l){ |
||||
setButton.addActionListener(l); |
||||
delButton.addActionListener(l); |
||||
} |
||||
|
||||
private class SetAction extends AbstractAction { |
||||
|
||||
public SetAction() { |
||||
this.putValue(Action.SMALL_ICON, setIcon); |
||||
} |
||||
|
||||
@Override |
||||
public void actionPerformed(ActionEvent arg0) { |
||||
final FormEditToolBar tb = new FormEditToolBar(); |
||||
tb.populate(toolBarPane.getFToolBar()); |
||||
BasicDialog dialog = tb.showWindow(DesignerContext.getDesignerFrame()); |
||||
dialog.addDialogActionListener(new DialogActionAdapter() { |
||||
public void doOk() { |
||||
toolBarPane.setFToolBar(tb.update()); |
||||
} |
||||
}); |
||||
dialog.setVisible(true); |
||||
} |
||||
} |
||||
|
||||
private class DelAction extends AbstractAction { |
||||
|
||||
public DelAction() { |
||||
this.putValue(Action.SMALL_ICON, delIcon); |
||||
} |
||||
|
||||
@Override |
||||
public void actionPerformed(ActionEvent arg0) { |
||||
toolBarPane.removeAll(); |
||||
toolBarPane.removeButtonList(); |
||||
toolBarPane.repaint(); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,68 @@
|
||||
package com.fr.design.mainframe; |
||||
|
||||
import com.fr.form.ui.ToolBar; |
||||
import com.fr.form.ui.Widget; |
||||
import com.fr.general.Background; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* Created by harry on 2017-3-2. |
||||
*/ |
||||
public class FormToolBar { |
||||
private List<FormToolBarButton> buttonlist = new ArrayList<FormToolBarButton>(); |
||||
private Background background = null; |
||||
private boolean isDefault = true; |
||||
|
||||
public List<FormToolBarButton> getButtonlist() { |
||||
return buttonlist; |
||||
} |
||||
|
||||
public void setButtonlist(List<FormToolBarButton> buttonlist) { |
||||
if (buttonlist == null || buttonlist.size() < 0) { |
||||
this.buttonlist = new ArrayList<FormToolBarButton>(); |
||||
} else { |
||||
this.buttonlist = buttonlist; |
||||
} |
||||
} |
||||
|
||||
public void addButton(FormToolBarButton toolBarButton) { |
||||
this.buttonlist.add(toolBarButton); |
||||
} |
||||
|
||||
public void removeButton(FormToolBarButton toolBarButton) { |
||||
this.buttonlist.remove(toolBarButton); |
||||
} |
||||
|
||||
public void clearButton() { |
||||
this.buttonlist.clear(); |
||||
} |
||||
|
||||
public Background getBackground() { |
||||
return background; |
||||
} |
||||
|
||||
public void setBackground(Background background) { |
||||
this.background = background; |
||||
} |
||||
|
||||
public boolean isDefault() { |
||||
return isDefault; |
||||
} |
||||
|
||||
public void setDefault(boolean isDefault) { |
||||
this.isDefault = isDefault; |
||||
} |
||||
|
||||
public ToolBar getToolBar() { |
||||
Widget[] widgets = new Widget[this.getButtonlist().size()]; |
||||
for (int j = 0; j < this.getButtonlist().size(); j++) { |
||||
widgets[j] = this.getButtonlist().get(j).getWidget(); |
||||
} |
||||
ToolBar toolBar = new ToolBar(widgets); |
||||
toolBar.setBackground(this.background); |
||||
toolBar.setDefault(this.isDefault); |
||||
return toolBar; |
||||
} |
||||
} |
@ -0,0 +1,164 @@
|
||||
package com.fr.design.mainframe; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.design.dialog.BasicDialog; |
||||
import com.fr.design.dialog.DialogActionAdapter; |
||||
import com.fr.design.gui.core.WidgetOption; |
||||
import com.fr.design.roleAuthority.ReportAndFSManagePane; |
||||
import com.fr.design.utils.gui.GUIPaintUtils; |
||||
import com.fr.form.ui.Widget; |
||||
import com.fr.form.ui.WidgetManager; |
||||
import com.fr.stable.Constants; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
import java.awt.event.MouseEvent; |
||||
import java.awt.event.MouseListener; |
||||
|
||||
/** |
||||
* Created by harry on 2017-3-2. |
||||
*/ |
||||
public class FormToolBarButton extends JButton implements MouseListener { |
||||
private Widget widget; |
||||
private WidgetOption widgetOption; |
||||
|
||||
public FormToolBarButton(Icon icon, Widget widget) { |
||||
this(null, icon, widget); |
||||
} |
||||
|
||||
public FormToolBarButton(String text, Icon icon, Widget widget) { |
||||
super(text, icon); |
||||
setBackground(null); |
||||
setRolloverEnabled(true); |
||||
this.widget = widget; |
||||
if (widget instanceof com.fr.form.ui.Button) { |
||||
com.fr.form.ui.Button button = (com.fr.form.ui.Button) widget; |
||||
String iconName = button.getIconName(); |
||||
if (StringUtils.isNotEmpty(iconName)) { |
||||
Image iimage = WidgetManager.getProviderInstance().getIconManager().getIconImage(iconName); |
||||
if (iimage != null) { |
||||
setIcon(new ImageIcon(iimage)); |
||||
} |
||||
} |
||||
} |
||||
this.addMouseListener(this); |
||||
setMargin(new Insets(0, 0, 0, 0)); |
||||
} |
||||
|
||||
/** |
||||
* 改变按钮的权限细粒度状态 |
||||
* |
||||
* @param selectedRole 选择的角色 |
||||
* @param isVisible 是否可见 |
||||
*/ |
||||
public void changeAuthorityState(String selectedRole, boolean isVisible) { |
||||
this.widget.changeOnlyVisibleAuthorityState(selectedRole, isVisible); |
||||
} |
||||
|
||||
/** |
||||
* 是都做过权限细粒度 |
||||
* |
||||
* @param role 选择的角色 |
||||
* @return 若是对应的该角色做过权限细粒度,则返回true |
||||
*/ |
||||
public boolean isDoneAuthorityEdited(String role) { |
||||
return this.widget.isDoneVisibleAuthority(role); |
||||
} |
||||
|
||||
public Widget getWidget() { |
||||
return this.widget; |
||||
} |
||||
|
||||
|
||||
public void setWidget(Widget widget) { |
||||
this.widget = widget; |
||||
} |
||||
|
||||
public WidgetOption getNameOption() { |
||||
return this.widgetOption; |
||||
} |
||||
|
||||
public void setNameOption(WidgetOption widgetOption) { |
||||
this.widgetOption = widgetOption; |
||||
} |
||||
|
||||
|
||||
protected void paintBorder(Graphics g) { |
||||
paintBorder(g, this); |
||||
} |
||||
|
||||
protected void paintBorder(Graphics g, FormToolBarButton b) { |
||||
String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName(); |
||||
GUIPaintUtils.drawBorder((Graphics2D) g, 0, 0, b.getWidth(), b.getHeight(), true, Constants.NULL, b.isDoneAuthorityEdited(selectedRoles)); |
||||
} |
||||
|
||||
/** |
||||
* 处理鼠标点击事件 |
||||
* |
||||
* @param e 鼠标点击事件 |
||||
*/ |
||||
public void mouseClicked(MouseEvent e) { |
||||
//该button只在报表块工具栏中使用,
|
||||
//parent只有FormToolBarPane一种,故可以直接强转
|
||||
final FormToolBarPane toolBarPane = (FormToolBarPane) this.getParent(); |
||||
if (BaseUtils.isAuthorityEditing()) { |
||||
auhtorityMouseAction(); |
||||
return; |
||||
} |
||||
if (e.getClickCount() >= 2) { |
||||
final FormEditToolBar editToolBar = new FormEditToolBar(); |
||||
editToolBar.populate(toolBarPane.getFToolBar(), this); |
||||
BasicDialog dialog = editToolBar.showWindow(DesignerContext.getDesignerFrame()); |
||||
dialog.addDialogActionListener(new DialogActionAdapter() { |
||||
public void doOk() { |
||||
toolBarPane.setFToolBar(editToolBar.update()); |
||||
} |
||||
}); |
||||
dialog.setVisible(true); |
||||
} |
||||
} |
||||
|
||||
|
||||
private void auhtorityMouseAction() { |
||||
if (this.isEnabled()) { |
||||
this.setSelected(!this.isSelected()); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 鼠标进入事件 |
||||
* |
||||
* @param e 鼠标进入事件 |
||||
*/ |
||||
public void mouseEntered(MouseEvent e) { |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 鼠标退出事件 |
||||
* |
||||
* @param e 鼠标退出事件 |
||||
*/ |
||||
public void mouseExited(MouseEvent e) { |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 鼠标按下事件 |
||||
* |
||||
* @param e 鼠标事件 |
||||
*/ |
||||
public void mousePressed(MouseEvent e) { |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 鼠标释放事件 |
||||
* |
||||
* @param e 鼠标事件 |
||||
*/ |
||||
public void mouseReleased(MouseEvent e) { |
||||
|
||||
} |
||||
} |
@ -0,0 +1,233 @@
|
||||
package com.fr.design.mainframe; |
||||
|
||||
import com.fr.design.beans.BasicBeanPane; |
||||
import com.fr.design.dialog.BasicDialog; |
||||
import com.fr.design.dialog.DialogActionAdapter; |
||||
import com.fr.design.gui.core.WidgetOption; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.form.ui.ToolBar; |
||||
import com.fr.form.ui.Widget; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
import java.awt.datatransfer.DataFlavor; |
||||
import java.awt.datatransfer.UnsupportedFlavorException; |
||||
import java.awt.event.MouseAdapter; |
||||
import java.awt.event.MouseEvent; |
||||
import java.awt.event.MouseListener; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* Created by harry on 2017-3-2. |
||||
*/ |
||||
public class FormToolBarPane extends BasicBeanPane<ToolBar> { |
||||
|
||||
private FormToolBar ftoolbar = new FormToolBar(); |
||||
|
||||
public FormToolBarPane() { |
||||
super(); |
||||
this.initComponent(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 添加鼠标监听 |
||||
* |
||||
* @param mouselistener 鼠标监听 |
||||
*/ |
||||
public void addAuthorityListener(MouseListener mouselistener) { |
||||
List<FormToolBarButton> list = ftoolbar.getButtonlist(); |
||||
for (int i = 0; i < list.size(); i++) { |
||||
list.get(i).addMouseListener(mouselistener); |
||||
} |
||||
} |
||||
|
||||
public FormToolBarPane(FormToolBarButton button) { |
||||
super(); |
||||
this.initComponent(); |
||||
this.add(button); |
||||
} |
||||
|
||||
/** |
||||
* 初始化组件 |
||||
*/ |
||||
public void initComponent() { |
||||
this.addMouseListener(listener); |
||||
this.setLayout(FRGUIPaneFactory.createBoxFlowLayout()); |
||||
this.setTransferHandler(new ToolBarHandler(TransferHandler.COPY)); |
||||
this.setBorder(BorderFactory.createTitledBorder("")); |
||||
} |
||||
|
||||
/** |
||||
* 删除鼠标事件 |
||||
*/ |
||||
public void removeDefaultMouseListener() { |
||||
this.removeMouseListener(listener); |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "Toolbar"; |
||||
} |
||||
|
||||
public void setSelectedButton(FormToolBarButton button) { |
||||
this.ftoolbar.addButton(button); |
||||
} |
||||
|
||||
/** |
||||
* 添加组件 |
||||
* |
||||
* @param comp 组件 |
||||
* |
||||
* @return 被添加的组件 |
||||
*/ |
||||
public Component add(Component comp) { |
||||
if (comp instanceof FormToolBarButton) { |
||||
this.ftoolbar.addButton((FormToolBarButton) comp); |
||||
} |
||||
return super.add(comp); |
||||
} |
||||
|
||||
private Component addComp(Component comp) { |
||||
return super.add(comp); |
||||
} |
||||
|
||||
|
||||
public void removeButtonList() { |
||||
this.ftoolbar.clearButton(); |
||||
} |
||||
|
||||
protected void setFToolBar(FormToolBar ftoolbar) { |
||||
if (ftoolbar == null) { |
||||
ftoolbar = new FormToolBar(); |
||||
} |
||||
this.ftoolbar = ftoolbar; |
||||
this.setToolBar(this.ftoolbar.getButtonlist()); |
||||
} |
||||
|
||||
public List<FormToolBarButton> getToolBarButtons() { |
||||
return ftoolbar.getButtonlist(); |
||||
} |
||||
|
||||
protected FormToolBar getFToolBar() { |
||||
return this.ftoolbar; |
||||
} |
||||
|
||||
public boolean isEmpty() { |
||||
return this.ftoolbar.getButtonlist().size() <= 0; |
||||
} |
||||
|
||||
private void setToolBar(List<FormToolBarButton> list) { |
||||
if (list == null || list.size() < 0) { |
||||
return; |
||||
} |
||||
this.removeAll(); |
||||
for (int i = 0; i < list.size(); i++) { |
||||
this.addComp(list.get(i)); |
||||
} |
||||
this.validate(); |
||||
this.repaint(); |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void populateBean(ToolBar toolbar) { |
||||
this.removeAll(); |
||||
this.getFToolBar().clearButton(); |
||||
for (int j = 0; j < toolbar.getWidgetSize(); j++) { |
||||
Widget widget = toolbar.getWidget(j); |
||||
WidgetOption no = WidgetOption.getToolBarButton(widget.getClass()); |
||||
if (no == null){ |
||||
//如果装了什么插件, 放到了工具栏上, 后来删除了插件, 模板里还存着之前的控件
|
||||
continue; |
||||
} |
||||
|
||||
FormToolBarButton button = new FormToolBarButton(no.optionIcon(), widget); |
||||
button.setNameOption(no); |
||||
this.add(button); |
||||
this.validate(); |
||||
this.repaint(); |
||||
} |
||||
this.getFToolBar().setBackground(toolbar.getBackground()); |
||||
this.getFToolBar().setDefault(toolbar.isDefault()); |
||||
} |
||||
|
||||
@Override |
||||
public ToolBar updateBean() { |
||||
return this.ftoolbar.getToolBar(); |
||||
} |
||||
|
||||
MouseListener listener = new MouseAdapter() { |
||||
@Override |
||||
public void mouseClicked(MouseEvent e) { |
||||
if (e.getClickCount() >= 2 && !SwingUtilities.isRightMouseButton(e)) { |
||||
final FormEditToolBar tb = new FormEditToolBar(); |
||||
tb.populate(getFToolBar()); |
||||
BasicDialog dialog = tb.showWindow(SwingUtilities.getWindowAncestor(FormToolBarPane.this)); |
||||
dialog.addDialogActionListener(new DialogActionAdapter() { |
||||
@Override |
||||
public void doOk() { |
||||
FormToolBarPane.this.setFToolBar(tb.update()); |
||||
} |
||||
}); |
||||
dialog.setVisible(true); |
||||
} |
||||
} |
||||
}; |
||||
|
||||
|
||||
/* |
||||
* 拖拽属性设置 |
||||
*/ |
||||
private class ToolBarHandler extends TransferHandler { |
||||
private int action; |
||||
|
||||
public ToolBarHandler(int action) { |
||||
this.action = action; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public boolean canImport(TransferHandler.TransferSupport support) { |
||||
if (!support.isDrop()) { |
||||
return false; |
||||
} |
||||
|
||||
if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)) { |
||||
return false; |
||||
} |
||||
|
||||
boolean actionSupported = (action & support.getSourceDropActions()) == action; |
||||
if (actionSupported) { |
||||
support.setDropAction(action); |
||||
return true; |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
@Override |
||||
public boolean importData(TransferHandler.TransferSupport support) { |
||||
if (!canImport(support)) { |
||||
return false; |
||||
} |
||||
WidgetOption data; |
||||
try { |
||||
data = (WidgetOption) support.getTransferable().getTransferData(DataFlavor.stringFlavor); |
||||
} catch (UnsupportedFlavorException e) { |
||||
return false; |
||||
} catch (java.io.IOException e) { |
||||
return false; |
||||
} |
||||
|
||||
Widget widget = data.createWidget(); |
||||
FormToolBarButton btn = new FormToolBarButton(data.optionIcon(), widget); |
||||
btn.setNameOption(data); |
||||
FormToolBarPane.this.add(btn); |
||||
FormToolBarPane.this.validate(); |
||||
FormToolBarPane.this.repaint(); |
||||
return true; |
||||
} |
||||
|
||||
} |
||||
} |
@ -0,0 +1,54 @@
|
||||
package com.fr.design.mainframe; |
||||
|
||||
import com.fr.design.gui.core.WidgetOption; |
||||
import com.fr.design.gui.core.WidgetOptionFactory; |
||||
import com.fr.form.ui.CustomToolBarButton; |
||||
import com.fr.form.web.button.ExcelO; |
||||
import com.fr.form.web.button.ExcelP; |
||||
import com.fr.form.web.button.Export; |
||||
import com.fr.form.web.button.page.*; |
||||
import com.fr.general.IOUtils; |
||||
import com.fr.general.Inter; |
||||
|
||||
/** |
||||
* Created by harry on 2017-3-3. |
||||
*/ |
||||
public class FormWebWidgetConstants { |
||||
|
||||
private FormWebWidgetConstants() { |
||||
} |
||||
|
||||
public static WidgetOption[] getFormElementCaseToolBarInstance() { |
||||
return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, EXPORT, EXCELP, EXCELO, CUSTOM_BUTTON}; |
||||
} |
||||
|
||||
// 当前页/总页数
|
||||
public static final WidgetOption PAGENAVI = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"HJS-Current_Page", "HF-Number_of_Page"}, new String[]{"/", ""}), |
||||
IOUtils.readIcon("/com/fr/web/images/pageNumber.png"), PageNavi.class); |
||||
// 首页
|
||||
public static final WidgetOption FIRST = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_ReportServerP-First"), IOUtils.readIcon("/com/fr/web/images/first.png"), |
||||
First.class); |
||||
// 末页
|
||||
public static final WidgetOption LAST = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_ReportServerP-Last"), IOUtils.readIcon("/com/fr/web/images/last.png"), |
||||
Last.class); |
||||
// 前一页
|
||||
public static final WidgetOption PREVIOUS = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_ReportServerP-Previous"), |
||||
IOUtils.readIcon("/com/fr/web/images/previous.png"), Previous.class); |
||||
// 后一页
|
||||
public static final WidgetOption NEXT = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_ReportServerP-Next"), IOUtils.readIcon("/com/fr/web/images/next.png"), |
||||
Next.class); |
||||
|
||||
// 导出成Excel 分页导出
|
||||
public static final WidgetOption EXCELP = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"Excel", "FR-Designer_Export_Excel_Page"}, new String[]{"(", ")"}), |
||||
IOUtils.readIcon("/com/fr/web/images/excel.png"), ExcelP.class); |
||||
// 导出成Excel 原样导出
|
||||
public static final WidgetOption EXCELO = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"Excel", "FR-Designer_Export_Excel_Simple"}, new String[]{"(", ")"}), |
||||
IOUtils.readIcon("/com/fr/web/images/excel.png"), ExcelO.class); |
||||
// 导出
|
||||
public static final WidgetOption EXPORT = WidgetOptionFactory |
||||
.createByWidgetClass(Inter.getLocText("FR-Engine_Export"), IOUtils.readIcon("/com/fr/web/images/export.png"), Export.class); |
||||
|
||||
public static final WidgetOption CUSTOM_BUTTON = WidgetOptionFactory |
||||
.createByWidgetClass(Inter.getLocText(new String[]{"Custom", "Form-Button"}), CustomToolBarButton.class); |
||||
|
||||
} |
@ -0,0 +1,57 @@
|
||||
package com.fr.design.mainframe.widget.accessibles; |
||||
|
||||
import com.fr.design.dialog.BasicDialog; |
||||
import com.fr.design.dialog.DialogActionAdapter; |
||||
import com.fr.design.gui.core.WidgetOption; |
||||
import com.fr.design.mainframe.FormWebWidgetConstants; |
||||
import com.fr.design.mainframe.widget.editors.ElementCaseToolBarPane; |
||||
import com.fr.design.mainframe.widget.wrappers.ElementCaseToolBarWrapper; |
||||
import com.fr.form.web.FormToolBarManager; |
||||
import com.fr.stable.ArrayUtils; |
||||
|
||||
import javax.swing.*; |
||||
import java.util.ArrayList; |
||||
import java.util.Arrays; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* Created by harry on 2017-2-23. |
||||
*/ |
||||
public class AccessibleElementCaseToolBarEditor extends UneditableAccessibleEditor { |
||||
private ElementCaseToolBarPane pane; |
||||
|
||||
public AccessibleElementCaseToolBarEditor() { |
||||
super(new ElementCaseToolBarWrapper()); |
||||
} |
||||
|
||||
@Override |
||||
protected void showEditorPane() { |
||||
if (pane == null) { |
||||
pane = new ElementCaseToolBarPane(); |
||||
pane.setDefaultToolBar(getDefaultToolBarManager(), getToolBarInstance()); |
||||
} |
||||
BasicDialog dlg = pane.showToolBarWindow(SwingUtilities.getWindowAncestor(this), new DialogActionAdapter() { |
||||
|
||||
@Override |
||||
public void doOk() { |
||||
setValue(pane.updateBean()); |
||||
fireStateChanged(); |
||||
} |
||||
}); |
||||
FormToolBarManager[] managers = (FormToolBarManager[]) getValue(); |
||||
pane.setCheckBoxSelected(ArrayUtils.isNotEmpty(managers)); |
||||
pane.populateBean((FormToolBarManager[]) getValue()); |
||||
dlg.setVisible(true); |
||||
} |
||||
|
||||
private FormToolBarManager getDefaultToolBarManager() { |
||||
return FormToolBarManager.createDefaultToolBar(); |
||||
} |
||||
|
||||
private WidgetOption[] getToolBarInstance() { |
||||
List<WidgetOption> defaultOptions = Arrays.asList(FormWebWidgetConstants.getFormElementCaseToolBarInstance()); |
||||
List<WidgetOption> options = new ArrayList<WidgetOption>(); |
||||
options.addAll(defaultOptions); |
||||
return options.toArray(new WidgetOption[options.size()]); |
||||
} |
||||
} |
@ -0,0 +1,13 @@
|
||||
package com.fr.design.mainframe.widget.editors; |
||||
|
||||
import com.fr.design.mainframe.widget.accessibles.AccessibleElementCaseToolBarEditor; |
||||
import com.fr.design.mainframe.widget.accessibles.AccessiblePropertyEditor; |
||||
|
||||
/** |
||||
* Created by harry on 2017-2-23. |
||||
*/ |
||||
public class ElementCaseToolBarEditor extends AccessiblePropertyEditor { |
||||
public ElementCaseToolBarEditor() { |
||||
super(new AccessibleElementCaseToolBarEditor()); |
||||
} |
||||
} |
@ -0,0 +1,304 @@
|
||||
package com.fr.design.mainframe.widget.editors; |
||||
|
||||
import com.fr.design.beans.BasicBeanPane; |
||||
import com.fr.design.gui.core.WidgetOption; |
||||
import com.fr.design.gui.ibutton.UIButton; |
||||
import com.fr.design.gui.icheckbox.UICheckBox; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.mainframe.DesignerContext; |
||||
import com.fr.design.mainframe.FormSettingToolBar; |
||||
import com.fr.design.mainframe.FormToolBarButton; |
||||
import com.fr.design.mainframe.FormToolBarPane; |
||||
import com.fr.form.ui.Widget; |
||||
import com.fr.form.web.FormToolBarManager; |
||||
import com.fr.form.web.Location; |
||||
import com.fr.general.IOUtils; |
||||
import com.fr.general.Inter; |
||||
import com.fr.stable.ArrayUtils; |
||||
import com.fr.stable.Constants; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import javax.swing.*; |
||||
import javax.swing.table.DefaultTableCellRenderer; |
||||
import javax.swing.table.DefaultTableModel; |
||||
import java.awt.*; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
import java.awt.event.MouseAdapter; |
||||
import java.awt.event.MouseEvent; |
||||
import java.awt.image.ImageObserver; |
||||
import java.util.*; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* Created by harry on 2017-2-23. |
||||
*/ |
||||
public class ElementCaseToolBarPane extends BasicBeanPane<FormToolBarManager[]> { |
||||
private static final int COLUMN = 2; |
||||
private int row = 6; |
||||
private DefaultTableModel toolbarButtonTableModel; |
||||
private JTable layoutTable; |
||||
private UICheckBox isUseToolBarCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Use_ToolBar") + ":"); // 是否使用工具栏
|
||||
|
||||
private FormToolBarPane northToolBar; |
||||
private FormToolBarPane southToolBar; |
||||
private FormToolBarManager defaultToolBar; |
||||
|
||||
|
||||
public ElementCaseToolBarPane() { |
||||
toolbarButtonTableModel = new TableModel(row ,COLUMN); |
||||
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
JPanel north = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
UIButton defaultButton = new UIButton(Inter.getLocText("FR-Designer_Restore_Default")); |
||||
// 恢复默认按钮
|
||||
defaultButton.addActionListener(new ActionListener() { |
||||
public void actionPerformed(ActionEvent e) { |
||||
northToolBar.removeButtonList(); |
||||
northToolBar.removeAll(); |
||||
southToolBar.removeButtonList(); |
||||
southToolBar.removeAll(); |
||||
if (defaultToolBar == null) { |
||||
return; |
||||
} |
||||
FormToolBarManager toolBarManager = defaultToolBar; |
||||
toolBarManager.setToolBarLocation(Location.createTopEmbedLocation()); |
||||
FormToolBarManager[] tbm = new FormToolBarManager[] { toolBarManager }; |
||||
populateBean(tbm); |
||||
ElementCaseToolBarPane.this.repaint(); |
||||
} |
||||
}); |
||||
|
||||
north.add(isUseToolBarCheckBox, BorderLayout.WEST); |
||||
JPanel aa = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
||||
aa.add(defaultButton); |
||||
north.add(aa, BorderLayout.CENTER); |
||||
this.add(north, BorderLayout.NORTH); |
||||
|
||||
northToolBar = new FormToolBarPane(); |
||||
northToolBar.setPreferredSize(new Dimension(ImageObserver.WIDTH, 26)); |
||||
northToolBar.setBackground(Color.lightGray); |
||||
|
||||
UIButton topButton = new UIButton(IOUtils.readIcon("com/fr/design/images/arrow/arrow_up.png")); |
||||
topButton.setBorder(null); |
||||
topButton.setOpaque(false); |
||||
topButton.setContentAreaFilled(false); |
||||
topButton.setFocusPainted(false); |
||||
topButton.setRequestFocusEnabled(false); |
||||
topButton.addActionListener(new ActionListener() { |
||||
|
||||
@Override |
||||
public void actionPerformed(ActionEvent e) { |
||||
if (isSelectedtable()) { |
||||
WidgetOption no = (WidgetOption)layoutTable.getValueAt(layoutTable.getSelectedRow(), layoutTable.getSelectedColumn()); |
||||
Widget widget = no.createWidget(); |
||||
FormToolBarButton tb = new FormToolBarButton(no.optionIcon(), widget); |
||||
tb.setNameOption(no); |
||||
northToolBar.add(tb); |
||||
northToolBar.validate(); |
||||
northToolBar.repaint(); |
||||
} else { |
||||
JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_ChooseOneButton")); |
||||
} |
||||
} |
||||
}); |
||||
|
||||
UIButton downButton = new UIButton(IOUtils.readIcon("com/fr/design/images/arrow/arrow_down.png")); |
||||
downButton.setBorder(null); |
||||
downButton.setMargin(null); |
||||
downButton.setOpaque(false); |
||||
downButton.setContentAreaFilled(false); |
||||
downButton.setFocusPainted(false); |
||||
downButton.setRequestFocusEnabled(false); |
||||
downButton.addActionListener(new ActionListener() { |
||||
|
||||
@Override |
||||
public void actionPerformed(ActionEvent e) { |
||||
if (isSelectedtable()) { |
||||
WidgetOption no = (WidgetOption)layoutTable.getValueAt(layoutTable.getSelectedRow(), layoutTable.getSelectedColumn()); |
||||
Widget widget = no.createWidget(); |
||||
FormToolBarButton tb = new FormToolBarButton(no.optionIcon(), widget); |
||||
tb.setNameOption(no); |
||||
southToolBar.add(tb); |
||||
southToolBar.validate(); |
||||
southToolBar.repaint(); |
||||
} else { |
||||
JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_ChooseOneButton")); |
||||
} |
||||
} |
||||
}); |
||||
|
||||
initLayoutTable(); |
||||
|
||||
JPanel center = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
center.setBackground(Color.white); |
||||
center.add(topButton, BorderLayout.NORTH); |
||||
JPanel small = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
small.setBackground(Color.white); |
||||
small.add(new UILabel(StringUtils.BLANK), BorderLayout.NORTH); |
||||
small.add(layoutTable, BorderLayout.CENTER); |
||||
center.add(small, BorderLayout.CENTER); |
||||
center.add(downButton, BorderLayout.SOUTH); |
||||
southToolBar = new FormToolBarPane(); |
||||
southToolBar.setPreferredSize(new Dimension(ImageObserver.WIDTH, 26)); |
||||
southToolBar.setBackground(Color.lightGray); |
||||
JPanel movePane = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
JPanel northContentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
FormSettingToolBar top = new FormSettingToolBar(Inter.getLocText("FR-Designer_ToolBar_Top"), northToolBar); |
||||
northContentPane.add(top, BorderLayout.EAST); |
||||
northContentPane.add(northToolBar, BorderLayout.CENTER); |
||||
northContentPane.setBackground(Color.lightGray); |
||||
|
||||
JPanel southContentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
FormSettingToolBar bottom = new FormSettingToolBar(Inter.getLocText("FR-Designer_ToolBar_Bottom"), southToolBar); |
||||
southContentPane.add(bottom, BorderLayout.EAST); |
||||
southContentPane.add(southToolBar, BorderLayout.CENTER); |
||||
southContentPane.setBackground(Color.lightGray); |
||||
|
||||
movePane.add(northContentPane, BorderLayout.NORTH); |
||||
movePane.add(center, BorderLayout.CENTER); |
||||
movePane.add(southContentPane, BorderLayout.SOUTH); |
||||
|
||||
this.add(new JScrollPane(movePane), BorderLayout.CENTER); |
||||
|
||||
isUseToolBarCheckBox.setSelected(false); |
||||
} |
||||
|
||||
private void initLayoutTable() { |
||||
layoutTable = new JTable(toolbarButtonTableModel); |
||||
layoutTable.setDefaultRenderer(Object.class, tableRenderer); |
||||
layoutTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
||||
layoutTable.setColumnSelectionAllowed(false); |
||||
layoutTable.setRowSelectionAllowed(false); |
||||
layoutTable.setBackground(Color.white); |
||||
int columnWidth = Integer.parseInt(Inter.getLocText("FR-Designer_LayoutTable_Column_Width")); |
||||
for (int i = 0; i < layoutTable.getColumnModel().getColumnCount(); i++) { |
||||
layoutTable.getColumnModel().getColumn(i).setPreferredWidth(columnWidth); |
||||
} |
||||
layoutTable.addMouseListener(new MouseAdapter() { |
||||
public void mouseClicked(MouseEvent e) { |
||||
if (e.getClickCount() > 1 && !SwingUtilities.isRightMouseButton(e)) { |
||||
WidgetOption no = (WidgetOption)layoutTable.getValueAt(layoutTable.getSelectedRow(), layoutTable.getSelectedColumn()); |
||||
Widget widget = no.createWidget(); |
||||
FormToolBarButton tb = new FormToolBarButton(no.optionIcon(), widget); |
||||
tb.setNameOption(no); |
||||
northToolBar.add(tb); |
||||
northToolBar.validate(); |
||||
northToolBar.repaint(); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
private boolean isSelectedtable() { |
||||
for (int i = 0; i < layoutTable.getColumnCount(); i++) { |
||||
if (layoutTable.isColumnSelected(i)) { |
||||
return true; |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 是否被选中 |
||||
* @return 同上 |
||||
*/ |
||||
public boolean isUseToolbar() { |
||||
return this.isUseToolBarCheckBox.isSelected(); |
||||
} |
||||
|
||||
public void setDefaultToolBar(FormToolBarManager defaultToolBar, WidgetOption[] buttonArray) { |
||||
this.defaultToolBar = defaultToolBar; |
||||
if (buttonArray != null) { |
||||
for (int i = 0; i < buttonArray.length; i++) { |
||||
toolbarButtonTableModel.setValueAt(buttonArray[i], i % row, i / row); |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
DefaultTableCellRenderer tableRenderer = new DefaultTableCellRenderer() { |
||||
@Override |
||||
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { |
||||
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); |
||||
|
||||
if (value instanceof WidgetOption) { |
||||
WidgetOption nameOption = (WidgetOption)value; |
||||
this.setText(nameOption.optionName()); |
||||
|
||||
Icon icon = nameOption.optionIcon(); |
||||
if (icon != null) { |
||||
this.setIcon(icon); |
||||
} |
||||
} |
||||
if (value == null) { |
||||
this.setText(StringUtils.EMPTY); |
||||
this.setIcon(null); |
||||
} |
||||
return this; |
||||
} |
||||
}; |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return Inter.getLocText(new String[]{"Form-EC_toolbar", "Set"}); |
||||
} |
||||
|
||||
public void setCheckBoxSelected(boolean b) { |
||||
this.isUseToolBarCheckBox.setSelected(b); |
||||
} |
||||
|
||||
@Override |
||||
public void populateBean(FormToolBarManager[] toolBarManager) { |
||||
if (ArrayUtils.isEmpty(toolBarManager)) { |
||||
defaultToolBar.setToolBarLocation(Location.createTopEmbedLocation()); |
||||
toolBarManager = new FormToolBarManager[] { defaultToolBar }; |
||||
} |
||||
if (ArrayUtils.isEmpty(toolBarManager)) { |
||||
return; |
||||
} |
||||
for (int i = 0; i < toolBarManager.length; i++) { |
||||
Location location = toolBarManager[i].getToolBarLocation(); |
||||
if (location instanceof Location.Embed) { |
||||
if (((Location.Embed)location).getPosition() == Constants.TOP) { |
||||
northToolBar.populateBean(toolBarManager[i].getToolBar()); |
||||
} else if (((Location.Embed)location).getPosition() == Constants.BOTTOM) { |
||||
southToolBar.populateBean(toolBarManager[i].getToolBar()); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public FormToolBarManager[] updateBean() { |
||||
if(!isUseToolbar()){ |
||||
return new FormToolBarManager[0]; |
||||
} |
||||
List<FormToolBarManager> toolBarManagerList = new ArrayList<FormToolBarManager>(); |
||||
if (!northToolBar.isEmpty()) { |
||||
FormToolBarManager north = new FormToolBarManager(); |
||||
north.setToolBar(northToolBar.updateBean()); |
||||
north.setToolBarLocation(Location.createTopEmbedLocation()); |
||||
toolBarManagerList.add(north); |
||||
} |
||||
|
||||
if (!southToolBar.isEmpty()) { |
||||
FormToolBarManager south = new FormToolBarManager(); |
||||
south.setToolBar(southToolBar.updateBean()); |
||||
south.setToolBarLocation(Location.createBottomEmbedLocation()); |
||||
toolBarManagerList.add(south); |
||||
} |
||||
return toolBarManagerList.toArray(new FormToolBarManager[toolBarManagerList.size()]); |
||||
} |
||||
|
||||
private class TableModel extends DefaultTableModel { |
||||
public TableModel(int i, int j) { |
||||
super(i, j); |
||||
} |
||||
|
||||
// 禁止jtable的双击编辑功能
|
||||
public boolean isCellEditable(int row, int column) { |
||||
return false; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,34 @@
|
||||
package com.fr.design.mainframe.widget.wrappers; |
||||
|
||||
import com.fr.design.Exception.ValidationException; |
||||
import com.fr.design.designer.properties.Decoder; |
||||
import com.fr.design.designer.properties.Encoder; |
||||
import com.fr.form.web.FormToolBarManager; |
||||
import com.fr.general.Inter; |
||||
|
||||
/** |
||||
* Created by harry on 2017-3-1. |
||||
*/ |
||||
public class ElementCaseToolBarWrapper implements Encoder, Decoder { |
||||
@Override |
||||
public Object decode(String txt) { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public void validate(String txt) throws ValidationException { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public String encode(Object v) { |
||||
if (v == null) { |
||||
return null; |
||||
} |
||||
FormToolBarManager[] toolBarManager = (FormToolBarManager[])v; |
||||
if (toolBarManager.length != 0) { |
||||
return Inter.getLocText("FR-Designer_Open"); |
||||
} |
||||
return Inter.getLocText("FR-Designer_Close"); |
||||
} |
||||
} |
Loading…
Reference in new issue