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.
144 lines
5.4 KiB
144 lines
5.4 KiB
package com.fr.design.condition; |
|
|
|
import com.fr.design.dialog.BasicDialog; |
|
import com.fr.design.dialog.DialogActionAdapter; |
|
import com.fr.design.gui.frpane.HyperlinkGroupPane; |
|
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.mainframe.DesignerContext; |
|
import com.fr.design.mainframe.HyperlinkGroupPaneActionImpl; |
|
import com.fr.js.EmailJavaScript; |
|
import com.fr.js.JavaScript; |
|
import com.fr.js.JavaScriptImpl; |
|
import com.fr.js.NameJavaScriptGroup; |
|
import com.fr.js.ReportletHyperlink; |
|
import com.fr.js.WebHyperlink; |
|
import com.fr.report.cell.cellattr.highlight.HighlightAction; |
|
import com.fr.report.cell.cellattr.highlight.HyperlinkHighlightAction; |
|
|
|
import javax.swing.SwingUtilities; |
|
import java.awt.Dimension; |
|
import java.awt.event.ActionEvent; |
|
import java.awt.event.ActionListener; |
|
|
|
import static com.fine.swing.ui.layout.Layouts.cell; |
|
import static com.fine.swing.ui.layout.Layouts.row; |
|
|
|
/** |
|
* @author richie |
|
* @date 2015-03-26 |
|
* @since 8.0 |
|
*/ |
|
public class HyperlinkPane extends ConditionAttrSingleConditionPane<HighlightAction> { |
|
private NameJavaScriptGroup jsGroup; |
|
protected UITextField typeField; |
|
protected UICheckBox useHyperlink; |
|
protected UIButton hyperlinkButton; |
|
protected HyperlinkGroupPane pane; |
|
protected BasicDialog dialog; |
|
|
|
public HyperlinkPane(final ConditionAttributesPane conditionAttributesPane) { |
|
super(conditionAttributesPane); |
|
hyperlinkButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Edit")); |
|
hyperlinkButton.addActionListener(new ActionListener() { |
|
public void actionPerformed(ActionEvent e) { |
|
NameJavaScriptGroup nameHyperlinks = jsGroup; |
|
pane = DesignerContext.getDesignerFrame().getSelectedJTemplate().getHyperLinkPaneNoPop(HyperlinkGroupPaneActionImpl.getInstance()); |
|
pane.populate(nameHyperlinks); |
|
dialog = pane.showWindow(SwingUtilities.getWindowAncestor(conditionAttributesPane)); |
|
dialog.addDialogActionListener(new DialogActionAdapter() { |
|
@Override |
|
public void doOk() { |
|
jsGroup = pane.updateJSGroup(); |
|
setText(); |
|
} |
|
}); |
|
dialog.setModal(false); |
|
dialog.setVisible(true); |
|
} |
|
}); |
|
hyperlinkButton.setEnabled(false); |
|
UILabel hyperlinkLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Hyperlink_Type") + ":"); |
|
typeField = new UITextField(12); |
|
typeField.setEditable(false); |
|
|
|
useHyperlink = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Use_Links")); |
|
useHyperlink.addActionListener(l); |
|
|
|
hyperlinkLabel.setPreferredSize(new Dimension(100, hyperlinkLabel.getHeight())); |
|
|
|
this.add(row(10, cell(hyperlinkLabel), row( |
|
10, |
|
cell(typeField), |
|
cell(hyperlinkButton), |
|
cell(useHyperlink), |
|
cell(cancel)) |
|
).getComponent()); |
|
} |
|
|
|
@Override |
|
public String nameForPopupMenuItem() { |
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Hyperlink"); |
|
} |
|
|
|
@Override |
|
protected String title4PopupWindow() { |
|
return nameForPopupMenuItem(); |
|
} |
|
|
|
ActionListener l = new ActionListener() { |
|
public void actionPerformed(ActionEvent e) { |
|
if (useHyperlink.isSelected()) { |
|
hyperlinkButton.setEnabled(true); |
|
setText(); |
|
} else { |
|
hyperlinkButton.setEnabled(false); |
|
typeField.setText(""); |
|
} |
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
public void setText() { |
|
if (jsGroup == null) { |
|
this.typeField.setText(""); |
|
} else if (jsGroup.size() > 1) { |
|
this.typeField.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_HyperLink_Must_Alone_Reset") + "!"); |
|
} else if (jsGroup.size() == 1) { |
|
JavaScript js = jsGroup.getNameHyperlink(0).getJavaScript(); |
|
if (js instanceof JavaScriptImpl) { |
|
this.typeField.setText("JavaScript"); |
|
} else if (js instanceof ReportletHyperlink) { |
|
this.typeField.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Report_Links")); |
|
} else if (js instanceof WebHyperlink) { |
|
this.typeField.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Hyperlink_Web_Link")); |
|
} else if (js instanceof EmailJavaScript) { |
|
this.typeField.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Email_Links")); |
|
} |
|
|
|
} |
|
} |
|
|
|
public void populate(HighlightAction ha) { |
|
this.jsGroup = ((HyperlinkHighlightAction)ha).getHperlink(); |
|
if ( jsGroup == null || jsGroup.size() == 0) { |
|
this.useHyperlink.setSelected(false); |
|
this.hyperlinkButton.setEnabled(false); |
|
} else { |
|
this.useHyperlink.setSelected(true); |
|
this.hyperlinkButton.setEnabled(true); |
|
this.setText(); |
|
} |
|
} |
|
|
|
public HighlightAction update() { |
|
if (this.useHyperlink.isSelected()) { |
|
return new HyperlinkHighlightAction(this.jsGroup); |
|
} |
|
return new HyperlinkHighlightAction(); |
|
} |
|
}
|
|
|