|
|
|
@ -1,18 +1,198 @@
|
|
|
|
|
package com.fanruan.api.design.work; |
|
|
|
|
|
|
|
|
|
import com.fanruan.api.design.ui.component.UIButton; |
|
|
|
|
import com.fanruan.api.design.ui.component.UIRadioButton; |
|
|
|
|
import com.fanruan.api.design.util.GUICoreKit; |
|
|
|
|
import com.fanruan.api.report.cell.CellImage; |
|
|
|
|
import com.fr.base.Style; |
|
|
|
|
import com.fr.design.dialog.BasicPane; |
|
|
|
|
import com.fr.design.gui.frpane.ImgChooseWrapper; |
|
|
|
|
import com.fr.design.style.background.image.ImageFileChooser; |
|
|
|
|
import com.fr.design.style.background.image.ImagePreviewPane; |
|
|
|
|
import com.fr.report.cell.Elem; |
|
|
|
|
import com.fr.report.cell.painter.CellImagePainter; |
|
|
|
|
import com.fr.stable.Constants; |
|
|
|
|
|
|
|
|
|
import javax.swing.BorderFactory; |
|
|
|
|
import javax.swing.ButtonGroup; |
|
|
|
|
import javax.swing.JFileChooser; |
|
|
|
|
import javax.swing.JPanel; |
|
|
|
|
import javax.swing.JScrollPane; |
|
|
|
|
import java.awt.BorderLayout; |
|
|
|
|
import java.awt.GridLayout; |
|
|
|
|
import java.awt.Image; |
|
|
|
|
import java.awt.event.ActionEvent; |
|
|
|
|
import java.awt.event.ActionListener; |
|
|
|
|
import java.io.File; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @author Lucian.Chen |
|
|
|
|
* @version 10.0 |
|
|
|
|
* Created by Lucian.Chen on 2020/3/23 |
|
|
|
|
* 这个类主要用于插入图片时的设置 |
|
|
|
|
*/ |
|
|
|
|
public class SelectImagePane extends com.fr.design.report.SelectImagePane { |
|
|
|
|
public class SelectImagePane extends BasicPane { |
|
|
|
|
private ImagePreviewPane previewPane = null; |
|
|
|
|
|
|
|
|
|
private ImageFileChooser imageFileChooser = null; |
|
|
|
|
private UIRadioButton defaultRadioButton = null; |
|
|
|
|
private UIRadioButton tiledRadioButton = null; |
|
|
|
|
private UIRadioButton extendRadioButton = null; |
|
|
|
|
private UIRadioButton adjustRadioButton = null; |
|
|
|
|
|
|
|
|
|
private Style imageStyle = null; |
|
|
|
|
|
|
|
|
|
private File imageFile; |
|
|
|
|
|
|
|
|
|
public SelectImagePane() { |
|
|
|
|
super(); |
|
|
|
|
this.setLayout(GUICoreKit.createBorderLayout()); |
|
|
|
|
|
|
|
|
|
// preview pane
|
|
|
|
|
JPanel previewContainerPane = GUICoreKit.createBorderLayoutPane(); |
|
|
|
|
this.add(previewContainerPane, BorderLayout.CENTER); |
|
|
|
|
|
|
|
|
|
JPanel previewOwnerPane = GUICoreKit.createBorderLayoutPane(); |
|
|
|
|
previewContainerPane.add(previewOwnerPane, BorderLayout.CENTER); |
|
|
|
|
|
|
|
|
|
previewOwnerPane.setBorder(GUICoreKit.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"), null)); |
|
|
|
|
|
|
|
|
|
previewPane = new ImagePreviewPane(); |
|
|
|
|
previewOwnerPane.add(new JScrollPane(previewPane)); |
|
|
|
|
|
|
|
|
|
JPanel selectFilePane = GUICoreKit.createBorderLayoutPane(); |
|
|
|
|
previewContainerPane.add(selectFilePane, BorderLayout.EAST); |
|
|
|
|
selectFilePane.setBorder(BorderFactory |
|
|
|
|
.createEmptyBorder(8, 2, 4, 0)); |
|
|
|
|
|
|
|
|
|
UIButton selectPictureButton = new UIButton( |
|
|
|
|
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Image_Select_Picture")); |
|
|
|
|
selectFilePane.add(selectPictureButton, BorderLayout.NORTH); |
|
|
|
|
selectPictureButton.setMnemonic('S'); |
|
|
|
|
selectPictureButton.addActionListener(selectPictureActionListener); |
|
|
|
|
|
|
|
|
|
JPanel layoutPane = GUICoreKit.createMediumHGapHighTopFlowInnerContainerPane(); |
|
|
|
|
selectFilePane.add(layoutPane, BorderLayout.CENTER); |
|
|
|
|
|
|
|
|
|
//布局
|
|
|
|
|
defaultRadioButton = new UIRadioButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Default")); |
|
|
|
|
tiledRadioButton = new UIRadioButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Image_Titled")); |
|
|
|
|
extendRadioButton = new UIRadioButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Image_Extend")); |
|
|
|
|
adjustRadioButton = new UIRadioButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Image_Adjust")); |
|
|
|
|
|
|
|
|
|
defaultRadioButton.addActionListener(layoutActionListener); |
|
|
|
|
tiledRadioButton.addActionListener(layoutActionListener); |
|
|
|
|
extendRadioButton.addActionListener(layoutActionListener); |
|
|
|
|
adjustRadioButton.addActionListener(layoutActionListener); |
|
|
|
|
|
|
|
|
|
JPanel jp = new JPanel(new GridLayout(4, 1, 15, 15)); |
|
|
|
|
jp.add(defaultRadioButton); |
|
|
|
|
jp.add(tiledRadioButton); |
|
|
|
|
jp.add(extendRadioButton); |
|
|
|
|
jp.add(adjustRadioButton); |
|
|
|
|
layoutPane.add(jp); |
|
|
|
|
|
|
|
|
|
ButtonGroup layoutBG = new ButtonGroup(); |
|
|
|
|
layoutBG.add(defaultRadioButton); |
|
|
|
|
layoutBG.add(tiledRadioButton); |
|
|
|
|
layoutBG.add(extendRadioButton); |
|
|
|
|
layoutBG.add(adjustRadioButton); |
|
|
|
|
|
|
|
|
|
defaultRadioButton.setSelected(true); |
|
|
|
|
|
|
|
|
|
// init image file chooser.
|
|
|
|
|
imageFileChooser = new ImageFileChooser(); |
|
|
|
|
imageFileChooser.setMultiSelectionEnabled(false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Select picture. |
|
|
|
|
*/ |
|
|
|
|
ActionListener selectPictureActionListener = new ActionListener() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent evt) { |
|
|
|
|
int returnVal = imageFileChooser |
|
|
|
|
.showOpenDialog(SelectImagePane.this); |
|
|
|
|
if (returnVal != JFileChooser.CANCEL_OPTION) { |
|
|
|
|
File selectedFile = imageFileChooser.getSelectedFile(); |
|
|
|
|
imageFile = selectedFile; |
|
|
|
|
ImgChooseWrapper.getInstance(previewPane, imageFileChooser, imageStyle, null).dealWithImageFile(returnVal); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// 调整图片样式,只有水平和垂直对齐以及拉伸。相对于背景,平铺不予考虑。
|
|
|
|
|
private void changeImageStyle() { |
|
|
|
|
previewPane.setImageStyle(this.imageStyle); |
|
|
|
|
previewPane.repaint(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void setImageStyle() { |
|
|
|
|
if (tiledRadioButton.isSelected()) { |
|
|
|
|
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED); |
|
|
|
|
} else if (adjustRadioButton.isSelected()) { |
|
|
|
|
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST); |
|
|
|
|
} else if (extendRadioButton.isSelected()) { |
|
|
|
|
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND); |
|
|
|
|
} else { |
|
|
|
|
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ActionListener layoutActionListener = new ActionListener() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent evt) { |
|
|
|
|
setImageStyle(); |
|
|
|
|
changeImageStyle(); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected String title4PopupWindow() { |
|
|
|
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Image"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void populate(Elem cell) { |
|
|
|
|
Style style = null; |
|
|
|
|
if (cell != null) { |
|
|
|
|
Object value = cell.getValue(); |
|
|
|
|
if (value instanceof Image) { |
|
|
|
|
setImage((Image) value); |
|
|
|
|
} else if (value instanceof CellImagePainter) { |
|
|
|
|
setImage(((CellImagePainter) value).getImage()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
style = cell.getStyle(); |
|
|
|
|
} |
|
|
|
|
if (style == null) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (style.getImageLayout() == Constants.IMAGE_TILED) { |
|
|
|
|
tiledRadioButton.setSelected(true); |
|
|
|
|
} else if (style.getImageLayout() == Constants.IMAGE_EXTEND) { |
|
|
|
|
extendRadioButton.setSelected(true); |
|
|
|
|
} else if (style.getImageLayout() == Constants.IMAGE_ADJUST) { |
|
|
|
|
adjustRadioButton.setSelected(true); |
|
|
|
|
} else { |
|
|
|
|
style.deriveImageLayout(Constants.IMAGE_CENTER); |
|
|
|
|
defaultRadioButton.setSelected(true); |
|
|
|
|
} |
|
|
|
|
this.imageStyle = style; |
|
|
|
|
changeImageStyle(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setImage(Image image) { |
|
|
|
|
previewPane.setImage(image); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public CellImage update() { |
|
|
|
|
return (CellImage) super.update(); |
|
|
|
|
CellImage cellImage = new CellImage(); |
|
|
|
|
cellImage.setImage(previewPane.getImageWithSuffix()); |
|
|
|
|
cellImage.setStyle(this.imageStyle); |
|
|
|
|
return cellImage; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public File getSelectedImage() { |
|
|
|
|
return imageFile; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|