|
|
|
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;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 这个类主要用于插入图片时的设置
|
|
|
|
*/
|
|
|
|
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() {
|
|
|
|
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() {
|
|
|
|
CellImage cellImage = new CellImage();
|
|
|
|
cellImage.setImage(previewPane.getImageWithSuffix());
|
|
|
|
cellImage.setStyle(this.imageStyle);
|
|
|
|
return cellImage;
|
|
|
|
}
|
|
|
|
|
|
|
|
public File getSelectedImage() {
|
|
|
|
return imageFile;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|