You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
6.7 KiB
186 lines
6.7 KiB
package com.fr.design.webattr; |
|
|
|
import com.formdev.flatlaf.util.ScaledEmptyBorder; |
|
import com.fr.base.ConfigManager; |
|
import com.fr.config.Configuration; |
|
import com.fr.design.constants.LayoutConstants; |
|
import com.fr.design.dialog.BasicDialog; |
|
import com.fr.design.dialog.DialogActionAdapter; |
|
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.form.event.Listener; |
|
|
|
import com.fr.report.web.Location; |
|
import com.fr.report.web.ToolBarManager; |
|
import com.fr.report.web.WebContent; |
|
import com.fr.report.web.WebView; |
|
import com.fr.transaction.Configurations; |
|
import com.fr.transaction.Worker; |
|
import com.fr.web.attr.ReportWebAttr; |
|
|
|
import javax.swing.*; |
|
import java.awt.*; |
|
import java.awt.event.ActionEvent; |
|
import java.awt.event.ActionListener; |
|
import java.util.ArrayList; |
|
import java.util.List; |
|
|
|
import static com.fine.swing.ui.layout.Layouts.cell; |
|
import static com.fine.swing.ui.layout.Layouts.column; |
|
import static com.fine.swing.ui.layout.Layouts.row; |
|
import static com.fine.theme.utils.FineUIUtils.wrapBoldLabelWithUnderline; |
|
|
|
public class ViewToolBarPane extends AbstractEditToolBarPane { |
|
private EventPane eventPane; |
|
|
|
private UICheckBox isUseToolBarCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Use_ToolBar")); |
|
private UIButton editToolBarButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Edit")); |
|
private UILabel showListenersLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Editing_Listeners")); |
|
private UICheckBox sortCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Sort_Sort")); |
|
private UICheckBox conditonFilterBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Selection_Filter")); |
|
private UICheckBox listFilterBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_List_Filter")); |
|
|
|
public ViewToolBarPane() { |
|
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
|
this.setBorder(new ScaledEmptyBorder(10, 10, 10, 10)); |
|
editToolBarButton.addActionListener(editBtnListener); |
|
isUseToolBarCheckBox.setSelected(true); |
|
isUseToolBarCheckBox.addActionListener(new ActionListener() { |
|
@Override |
|
public void actionPerformed(ActionEvent e) { |
|
editToolBarButton.setEnabled(isUseToolBarCheckBox.isSelected()); |
|
} |
|
}); |
|
// 切换BI工程目录 webView未设置 默认false |
|
sortCheckBox.setSelected(false); |
|
conditonFilterBox.setSelected(false); |
|
listFilterBox.setSelected(false); |
|
JPanel northPanel = column(LayoutConstants.VERTICAL_GAP, |
|
row(LayoutConstants.HORIZONTAL_GAP, cell(sortCheckBox), cell(conditonFilterBox), cell(listFilterBox)), |
|
row(LayoutConstants.HORIZONTAL_GAP, cell(isUseToolBarCheckBox), cell(editToolBarButton)) |
|
).getComponent(); |
|
|
|
//事件编辑 |
|
JPanel eventPanel = new JPanel(new BorderLayout()); |
|
eventPane = new EventPane(new WebView().supportedEvents()); |
|
wrapBoldLabelWithUnderline(showListenersLabel); |
|
eventPanel.add(column(LayoutConstants.VGAP_SMALL, cell(showListenersLabel), cell(eventPane).weight(1)).getComponent()); |
|
|
|
//整体布局 |
|
this.add(column(LayoutConstants.VERTICAL_GAP, |
|
cell(northPanel), |
|
cell(eventPanel).weight(1) |
|
).getComponent()); |
|
|
|
//wei : 默认没config.xml的情况下,就有默认工具栏 |
|
ToolBarManager toolBarManager = ToolBarManager.createDefaultViewToolBar(); |
|
toolBarManager.setToolBarLocation(Location.createTopEmbedLocation()); |
|
this.toolBarManagers = new ToolBarManager[] {toolBarManager}; |
|
} |
|
|
|
@Override |
|
public void setEnabled(boolean isEnabled) { |
|
super.setEnabled(isEnabled); |
|
|
|
this.eventPane.setEnabled(isEnabled); |
|
|
|
this.isUseToolBarCheckBox.setEnabled(isEnabled); |
|
this.sortCheckBox.setEnabled(isEnabled); |
|
this.conditonFilterBox.setEnabled(isEnabled); |
|
this.listFilterBox.setEnabled(isEnabled); |
|
this.editToolBarButton.setEnabled(isEnabled && isUseToolBarCheckBox.isSelected()); |
|
this.showListenersLabel.setEnabled(isEnabled); |
|
} |
|
|
|
@Override |
|
protected String title4PopupWindow() { |
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_M_Data_Analysis_Settings"); |
|
} |
|
|
|
@Override |
|
public void populateBean(WebContent webView) { |
|
if (webView == null) { |
|
webView = new WebView(); |
|
} |
|
|
|
if (webView.isUseToolBar()) { |
|
this.toolBarManagers = webView.getToolBarManagers(); |
|
this.isUseToolBarCheckBox.setSelected(true); |
|
} else { |
|
this.isUseToolBarCheckBox.setSelected(false); |
|
editToolBarButton.setEnabled(false); |
|
} |
|
WebView wv = (WebView) webView; |
|
this.listFilterBox.setSelected(wv.isListFuncCheck()); |
|
this.conditonFilterBox.setSelected(wv.isConditionFuncCheck()); |
|
this.sortCheckBox.setSelected(wv.isSortFuncCheck()); |
|
if (webView.getListenerSize() != 0) { |
|
List<Listener> list = new ArrayList<Listener>(); |
|
for (int i = 0; i < webView.getListenerSize(); i++) { |
|
list.add(webView.getListener(i)); |
|
} |
|
eventPane.populate(list); |
|
} |
|
} |
|
|
|
@Override |
|
public WebView updateBean() { |
|
WebView webView = new WebView(); |
|
if (isUseToolBarCheckBox.isSelected()) { |
|
webView.setToolBarManagers(toolBarManagers); |
|
} else { |
|
webView.setToolBarManagers(new ToolBarManager[0]); |
|
} |
|
webView.setSortFuncCheck(sortCheckBox.isSelected()); |
|
webView.setConditionFuncCheck(conditonFilterBox.isSelected()); |
|
webView.setListFuncCheck(listFilterBox.isSelected()); |
|
for (int i = 0; i < eventPane.update().size(); i++) { |
|
Listener listener = eventPane.update().get(i); |
|
webView.addListener(listener); |
|
} |
|
return webView; |
|
} |
|
|
|
/** |
|
* 编辑服务器工具栏窗格 |
|
*/ |
|
@Override |
|
public void editServerToolBarPane() { |
|
final ViewToolBarPane serverPageToolBarPane = new ViewToolBarPane(); |
|
ReportWebAttr reportWebAttr = ((ReportWebAttr) ConfigManager.getProviderInstance().getGlobalAttribute(ReportWebAttr.class)); |
|
if (reportWebAttr != null) { |
|
serverPageToolBarPane.populateBean(reportWebAttr.getWebView()); |
|
} |
|
BasicDialog serverPageDialog = serverPageToolBarPane.showWindow(SwingUtilities.getWindowAncestor(ViewToolBarPane.this)); |
|
serverPageDialog.addDialogActionListener(new DialogActionAdapter() { |
|
|
|
@Override |
|
public void doOk() { |
|
Configurations.update(new Worker() { |
|
@Override |
|
public void run() { |
|
ReportWebAttr reportWebAttr = ((ReportWebAttr)ConfigManager.getProviderInstance().getGlobalAttribute(ReportWebAttr.class)); |
|
reportWebAttr.setWebView(serverPageToolBarPane.updateBean()); |
|
} |
|
|
|
@Override |
|
public Class<? extends Configuration>[] targets() { |
|
return new Class[]{ReportWebAttr.class}; |
|
} |
|
}); |
|
|
|
} |
|
}); |
|
serverPageDialog.setVisible(true); |
|
|
|
} |
|
|
|
|
|
@Override |
|
protected WidgetOption[] getToolBarInstance() { |
|
return ReportWebWidgetConstants.getViewToolBarInstance(); |
|
} |
|
}
|
|
|