帆软报表设计器源代码。
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.
 
 
 
 

130 lines
4.2 KiB

package com.fr.design.chart.report;
import com.fr.base.MapXMLHelper;
import com.fr.chart.base.MapSvgXMLHelper;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.editor.ValueEditorPane;
import com.fr.design.editor.ValueEditorPaneFactory;
import com.fr.design.editor.editor.Editor;
import com.fr.design.editor.editor.TextEditor;
import com.fr.design.gui.itableeditorpane.UIArrayTableModel;
import com.fr.design.gui.itableeditorpane.UITableEditorPane;
import com.fr.design.gui.xcombox.ComboBoxUseEditor;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellEditor;
import java.awt.*;
import java.util.List;
/**
* 地图, 下层钻取设置
* @author kunsnat E-mail:kunsnat@gmail.com
* @version 创建时间:2012-10-19 下午03:19:53
*/
public class MapCubeSetDataPane extends BasicBeanPane<List>{
private UITableEditorPane tableEditorPane;// 地图名称 + 地图类型列表
private String[] initNames = new String[]{""};
public MapCubeSetDataPane() {
initCom();
}
private void initCom() {
this.setLayout(new BorderLayout(0, 0));
UIArrayTableModel model = new UIArrayTableModel(new String[]{Inter.getLocText("FR-Chart-Area_Name"), Inter.getLocText("FR-Chart-Drill_Map")}, new int[] {}) {
public boolean isCellEditable(int row, int col) {
return col != 0;
}
};
model.setDefaultEditor(Object.class, new DefaultComboBoxEditor());
model.setDefaultRenderer(Object.class, new DefaultComboBoxRenderer());
tableEditorPane = new UITableEditorPane<Object[]>(model);
this.add(tableEditorPane);
model.addRow(new Object[]{"", ""});
}
/**
* 刷新下拉列表
*/
public void freshComboxNames() {
initNames = MapSvgXMLHelper.getInstance().mapAllNames();
}
/**
* 位图地图刷新下拉列表
*/
public void freshBitMapComboxNames() {
initNames = MapXMLHelper.getInstance().mapAllNames();
}
// 需要得到地图 所有区域名称. 以及对应好的名字.
@Override
public void populateBean(List ob) {
tableEditorPane.populate(ob.toArray());
}
@Override
public List updateBean() {
return tableEditorPane.update();
}
@Override
protected String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Drill_Setting");
}
/**
* refresh TODO 只是需要随时更新initNames
* @author kunsnat E-mail:kunsnat@gmail.com
* @version 创建时间:2012-11-20 下午05:12:20
*/
private class DefaultComboBoxEditor extends AbstractCellEditor implements TableCellEditor {
private static final long serialVersionUID = -3239789564820528730L;
private ValueEditorPane cellEditor;
public DefaultComboBoxEditor() {
cellEditor = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ComboBoxUseEditor(initNames)});
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if(column == 0) {
cellEditor = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new TextEditor()});
} else {
cellEditor = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ComboBoxUseEditor(initNames)});
}
cellEditor.populate(value == null ? "" : value);
return cellEditor;
}
public Object getCellEditorValue() {
return cellEditor.update();
}
}
private class DefaultComboBoxRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = -695450455731718014L;
private ValueEditorPane cellEditor;
public DefaultComboBoxRenderer() {
cellEditor = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ComboBoxUseEditor(initNames)});
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if(column == 0) {
cellEditor = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new TextEditor()});
} else {
cellEditor = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ComboBoxUseEditor(initNames)});
}
cellEditor.populate(value == null ? "" : value);
return cellEditor;
}
}
}