package de.tud.inf.gui.properties; import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.HashSet; import java.util.Set; import javax.swing.AbstractCellEditor; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JTable; import com.rapidminer.gui.RapidMinerGUI; import com.rapidminer.gui.properties.PropertyValueCellEditor; import com.rapidminer.gui.tools.SwingTools; import com.rapidminer.operator.Operator; import com.rapidminer.parameter.ParameterTypeDirectory; import com.rapidminer.parameter.ParameterTypeFile; import de.tud.inf.parameters.ParameterTypeFiles; public class SimpleFilesCellEditor extends AbstractCellEditor implements PropertyValueCellEditor{ /** * */ private static final long serialVersionUID = 5395497787414404444L; private ParameterTypeFile type; private JButton button; private Set<File> fileSet = new HashSet<File>(); public SimpleFilesCellEditor(ParameterTypeFiles type) { this.type = type; button = new JButton("Select files..."); button.setMargin(new Insets(0, 0, 0, 0)); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { buttonPressed(); } }); } private void buttonPressed() { // String value = (String) getCellEditorValue(); // File file = (value == null || value.length() == 0) ? null : RapidMinerGUI.getMainFrame().getProcess().resolveFileName(value); // File selectedFile = SwingTools.chooseFile(RapidMinerGUI.getMainFrame(), file, true, type instanceof ParameterTypeDirectory, type.getExtension(), type.getKey()); // if ((selectedFile != null)) { // setText(selectedFile); // fireEditingStopped(); // } else { // fireEditingCanceled(); // } FilesPropertyDialog diag = new FilesPropertyDialog(fileSet); diag.setVisible(true); if(diag.isOk()) fireEditingStopped(); else fireEditingCanceled(); } public Object getCellEditorValue() { StringBuffer fileList = new StringBuffer(); for(File f : fileSet) fileList.append(f.getPath() + ";"); return fileList.toString(); } public void setOperator(Operator operator) { // TODO Auto-generated method stub } public boolean useEditorAsRenderer() { // TODO Auto-generated method stub return true; } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { String[] files = null; Set<File> newFileSet; if(value instanceof String) { files = ((String)value).split(";"); newFileSet = new HashSet<File>(); for(String path : files) { if(path.length() > 0) newFileSet.add(new File(path)); } } else { newFileSet = (Set<File>)value; } fileSet = newFileSet; return button; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { return getTableCellEditorComponent(table, value, isSelected, row, column); } }