import javax.swing.JPanel;
import java.awt.Frame;
import java.awt.BorderLayout;
import javax.swing.JDialog;
import java.awt.Rectangle;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.border.BevelBorder;
import javax.swing.border.LineBorder;
import javax.swing.table.AbstractTableModel;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JCheckBox;
import javax.swing.JRadioButton;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import java.awt.Component;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class DlgStandartObjekt extends JDialog {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel jPanelErstell1 = null;
private JLabel jLabelName = null;
private JTextField jTextFieldName = null;
private JTextField jTextFieldAnzParameter = null;
private JLabel jLabelAnzParameter = null;
private JButton jButtonWeiter1 = null;
private JScrollPane jScrollPaneEigenschaften = null;
public MyTableModel_Eigenschaften model_eigenschaften = new MyTableModel_Eigenschaften();
JTable jTableStandartObjektEigenschaften = new JTable(model_eigenschaften){
public TableCellRenderer getCellRenderer(int row, int column) {
TableColumn tableColumn = getColumnModel().getColumn(column);
TableCellRenderer renderer = tableColumn.getCellRenderer();
if (renderer == null) {
Class c = getColumnClass(column);
if( c.equals(Object.class) ) {
Object o = getValueAt(row,column);
if( o != null )
c = getValueAt(row,column).getClass();
}
renderer = getDefaultRenderer(c);
}
return renderer;
}
public TableCellEditor getCellEditor(int row, int column) {
TableColumn tableColumn = getColumnModel().getColumn(column);
TableCellEditor editor = tableColumn.getCellEditor();
if (editor == null) {
Class c = getColumnClass(column);
if( c.equals(Object.class) ) {
Object o = getValueAt(row,column);
if( o != null )
c = getValueAt(row,column).getClass();
}
editor = getDefaultEditor(c);
}
return editor;
}
};
/**
* @param owner
*/
public DlgStandartObjekt(Frame owner) {
super(owner);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(900, 600);
this.setContentPane(getJContentPane());
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJPanelErstell1(), null);
jContentPane.add(getJScrollPaneEigenschaften(), null);
}
return jContentPane;
}
/**
* This method initializes jPanelErstell1
*
* @return javax.swing.JPanel
*/
private JPanel getJPanelErstell1() {
if (jPanelErstell1 == null) {
jLabelAnzParameter = new JLabel();
jLabelAnzParameter.setBounds(new Rectangle(20, 70, 120, 20));
jLabelAnzParameter.setText("Parameteranzahl:");
jLabelName = new JLabel();
jLabelName.setBounds(new Rectangle(20, 20, 120, 20));
jLabelName.setText("Name:");
jPanelErstell1 = new JPanel();
jPanelErstell1.setLayout(null);
jPanelErstell1.setBounds(new Rectangle(0, 0, 300, 200));
jPanelErstell1.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
jPanelErstell1.add(jLabelName, null);
jPanelErstell1.add(getJTextFieldName(), null);
jPanelErstell1.add(getJTextFieldAnzParameter(), null);
jPanelErstell1.add(jLabelAnzParameter, null);
jPanelErstell1.add(getJButtonWeiter1(), null);
}
return jPanelErstell1;
}
/**
* This method initializes jTextFieldName
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldName() {
if (jTextFieldName == null) {
jTextFieldName = new JTextField();
jTextFieldName.setBounds(new Rectangle(150, 20, 130, 20));
}
return jTextFieldName;
}
/**
* This method initializes jTextFieldAnzParameter
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldAnzParameter() {
if (jTextFieldAnzParameter == null) {
jTextFieldAnzParameter = new JTextField();
jTextFieldAnzParameter.setBounds(new Rectangle(150, 70, 130, 20));
}
return jTextFieldAnzParameter;
}
/**
* This method initializes jButtonWeiter1
*
* @return javax.swing.JButton
*/
private JButton getJButtonWeiter1() {
if (jButtonWeiter1 == null) {
jButtonWeiter1 = new JButton();
jButtonWeiter1.setBounds(new Rectangle(100, 130, 100, 30));
jButtonWeiter1.setText("Weiter");
jButtonWeiter1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
if(jTextFieldAnzParameter.getText().matches("[0-9]+")){
int anz=Integer.parseInt(jTextFieldAnzParameter.getText());
for(int i=0; i<anz; i++){
JLabel parameter=new JLabel();
parameter.setText("Parameter ["+(i+1)+"] :");
final JRadioButton parameterRadio_Zahl=new JRadioButton();
parameterRadio_Zahl.setName(""+i);
parameterRadio_Zahl.setText("Zahlen");
final JRadioButton parameterRadio_Text=new JRadioButton();
parameterRadio_Text.setName(""+i);
parameterRadio_Text.setText("Text");
final JRadioButton parameterRadio_ComboBox=new JRadioButton();
parameterRadio_ComboBox.setName(""+i);
parameterRadio_ComboBox.setText("Auswahlfeld");
final JRadioButton parameterRadio_Farbfeld=new JRadioButton();
parameterRadio_Farbfeld.setName(""+i);
parameterRadio_Farbfeld.setText("Farbfeld");
final JTextField parameterName=new JTextField();
parameterName.setName(""+i);
parameterName.setText("");
parameterName.setVisible(false);
final JTextField parameterWert=new JTextField();
parameterWert.setName(""+i);
parameterWert.setText("");
parameterWert.setVisible(false);
parameterRadio_Zahl.addMouseListener(new java.awt.event.MouseListener() {
public void mouseClicked(java.awt.event.MouseEvent e) {
}
public void mousePressed(java.awt.event.MouseEvent e) {
}
public void mouseReleased(java.awt.event.MouseEvent e) {
parameterRadio_Zahl.setSelected(true);
parameterRadio_Text.setSelected(false);
parameterRadio_ComboBox.setSelected(false);
parameterRadio_Farbfeld.setSelected(false);
parameterName.setVisible(true);
parameterWert.setVisible(true);
parameterName.setEnabled(true);
parameterWert.setEnabled(true);
}
public void mouseEntered(java.awt.event.MouseEvent e) {
}
public void mouseExited(java.awt.event.MouseEvent e) {
}
});
parameterRadio_Text.addMouseListener(new java.awt.event.MouseListener() {
public void mouseClicked(java.awt.event.MouseEvent e) {
}
public void mousePressed(java.awt.event.MouseEvent e) {
}
public void mouseReleased(java.awt.event.MouseEvent e) {
parameterRadio_Zahl.setSelected(false);
parameterRadio_Text.setSelected(true);
parameterRadio_ComboBox.setSelected(false);
parameterRadio_Farbfeld.setSelected(false);
parameterName.setVisible(true);
parameterWert.setVisible(true);
parameterName.setEnabled(true);
parameterWert.setEnabled(true);
}
public void mouseEntered(java.awt.event.MouseEvent e) {
}
public void mouseExited(java.awt.event.MouseEvent e) {
}
});
parameterRadio_ComboBox.addMouseListener(new java.awt.event.MouseListener() {
public void mouseClicked(java.awt.event.MouseEvent e) {
}
public void mousePressed(java.awt.event.MouseEvent e) {
}
public void mouseReleased(java.awt.event.MouseEvent e) {
parameterRadio_Zahl.setSelected(false);
parameterRadio_Text.setSelected(false);
parameterRadio_ComboBox.setSelected(true);
parameterRadio_Farbfeld.setSelected(false);
parameterName.setVisible(true);
parameterWert.setVisible(true);
parameterName.setEnabled(true);
parameterWert.setEnabled(false);
}
public void mouseEntered(java.awt.event.MouseEvent e) {
}
public void mouseExited(java.awt.event.MouseEvent e) {
}
});
parameterRadio_Farbfeld.addMouseListener(new java.awt.event.MouseListener() {
public void mouseClicked(java.awt.event.MouseEvent e) {
}
public void mousePressed(java.awt.event.MouseEvent e) {
}
public void mouseReleased(java.awt.event.MouseEvent e) {
parameterRadio_Zahl.setSelected(false);
parameterRadio_Text.setSelected(false);
parameterRadio_ComboBox.setSelected(false);
parameterRadio_Farbfeld.setSelected(true);
parameterName.setVisible(true);
parameterWert.setVisible(true);
parameterName.setEnabled(true);
parameterWert.setEnabled(false);
parameterWert.setText(getFarbe(parameterWert));
}
public void mouseEntered(java.awt.event.MouseEvent e) {
}
public void mouseExited(java.awt.event.MouseEvent e) {
}
});
Object daten[][]= new Object[1][10];
daten[0][0]=parameter;
daten[0][1]=parameterRadio_Zahl;
daten[0][2]=parameterRadio_Text;
daten[0][3]=parameterRadio_ComboBox;
daten[0][4]=parameterRadio_Farbfeld;
daten[0][5]=parameterName;
daten[0][6]=parameterWert;
model_eigenschaften.add(daten);
}
}
}
});
}
return jButtonWeiter1;
}
private String getFarbe(JTextField parameterWert){
String farbe=null;
if(!parameterWert.getText().matches("#[a-zA-Z0-9]+")){
farbe = "#FFFFFF";
}else{
farbe = ""+parameterWert.getText();
}
DlgFarben dlg = new DlgFarben(null,farbe);
dlg.setModal(true);
dlg.setVisible(true);
return dlg.return_farbe;
}
/**
* This method initializes jPanelEigenschaften
*
* @return javax.swing.JPanel
*/
private JScrollPane getJScrollPaneEigenschaften() {
if (jScrollPaneEigenschaften == null) {
jScrollPaneEigenschaften = new JScrollPane();
jScrollPaneEigenschaften.setBounds(new Rectangle(0, 200, 893, 373));
jScrollPaneEigenschaften.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
jScrollPaneEigenschaften.setViewportView(getJTableStandartObjektEigenschaften());
}
return jScrollPaneEigenschaften;
}
private JTable getJTableStandartObjektEigenschaften() {
if (jTableStandartObjektEigenschaften == null) {
jTableStandartObjektEigenschaften = new JTable();
}
return jTableStandartObjektEigenschaften;
}
private void initColumnSizes(JTable table, int row, int col) {
TableColumn column = null;
Component comp = null;
int headerWidth = 0;
int cellWidth = 0;
Object[][] data = model_eigenschaften.data;
TableCellRenderer headerRenderer =
table.getTableHeader().getDefaultRenderer();
for(int j = 0; j < row; j++){
for (int i = 0; i < col; i++) {
column = table.getColumnModel().getColumn(i);
comp = headerRenderer.getTableCellRendererComponent(
null, column.getHeaderValue(),
false, false, 0, 0);
headerWidth = comp.getPreferredSize().width;
comp = table.getDefaultRenderer(model_eigenschaften.getColumnClass(j, i)).
getTableCellRendererComponent(
table, data[j][i],
false, false, j, i);
cellWidth = comp.getPreferredSize().width;
column.setPreferredWidth(Math.max(headerWidth, cellWidth));
}
}
}
class MyTableModel_Eigenschaften extends AbstractTableModel {
boolean zell_typ=false;
Object typ_vars[][] = new Object [500][10];
private String[] columnNames = {"Parameter", "", "", "Feldeigenschaft", "", "Parametername", "Parameterwert"};
private Object[][] data = new Object[0][10];
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class getColumnClass(int row, int col) {
return getValueAt(row, col).getClass();
}
public boolean isCellEditable(int row, int col) {
if (col < 1) {
return false;
} else {
return true;
}
}
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
public void add(Object value[][]) {
zell_typ=false;
int neueZeilen=0;
for(int i=0;i<value.length; i++){
neueZeilen++;
if(value[i]==null){
break;
}
}
Object[][] oldData = data;
int alteLaenge = data.length;
data = new Object[alteLaenge +neueZeilen][10];
for (int i=0; i < alteLaenge; i++ ) {
data[i] = oldData[i];
}
for (int i=0; i < neueZeilen; i++) {
data[alteLaenge+i] = value[i];
}
int r=data.length;
int c=0;
for(int j=0; j < 10; j++){
if(data[0][j]==null){
break;
}
c++;
}
initColumnSizes(jTableStandartObjektEigenschaften, r, c);
fireTableRowsInserted(alteLaenge, alteLaenge+neueZeilen);
}
public void del_all() {
int alteZeilen=0;
for(int i=0;i<data.length; i++){
alteZeilen++;
if(data[i]==null){
break;
}
}
Object[][] data_new = new Object[2][10];
for (int i=0; i < 1; i++) {
data_new[i] = data[i];
}
data = new Object[1][10];
for (int i=0; i < 1; i++) {
data[i] = data_new[i];
}
fireTableRowsDeleted(0,alteZeilen);
}
}
class JComponentCellRenderer implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return (JComponent)value;
}
}
class JComponentCellEditor implements TableCellEditor, Serializable {
protected EventListenerList listenerList = new EventListenerList();
transient protected ChangeEvent changeEvent = null;
protected JComponent editorComponent = null;
public Component getComponent() {
return editorComponent;
}
public Object getCellEditorValue() {
return editorComponent;
}
public boolean isCellEditable(EventObject anEvent) {
return true;
}
public boolean shouldSelectCell(EventObject anEvent) {
if( editorComponent != null && anEvent instanceof MouseEvent
&& ((MouseEvent)anEvent).getID() == MouseEvent.MOUSE_PRESSED ) {
Component dispatchComponent = SwingUtilities.getDeepestComponentAt(editorComponent, 3, 3 );
MouseEvent e = (MouseEvent)anEvent;
MouseEvent e2 = new MouseEvent( dispatchComponent, MouseEvent.MOUSE_RELEASED,
e.getWhen() + 100000, e.getModifiers(), 3, 3, e.getClickCount(),
e.isPopupTrigger() );
dispatchComponent.dispatchEvent(e2);
e2 = new MouseEvent( dispatchComponent, MouseEvent.MOUSE_CLICKED,
e.getWhen() + 100001, e.getModifiers(), 3, 3, 1,
e.isPopupTrigger() );
dispatchComponent.dispatchEvent(e2);
}
return false;
}
public boolean stopCellEditing() {
fireEditingStopped();
return true;
}
public void cancelCellEditing() {
fireEditingCanceled();
}
public void addCellEditorListener(CellEditorListener l) {
listenerList.add(CellEditorListener.class, l);
}
public void removeCellEditorListener(CellEditorListener l) {
listenerList.remove(CellEditorListener.class, l);
}
protected void fireEditingStopped() {
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==CellEditorListener.class) {
// Lazily create the event:
if (changeEvent == null)
changeEvent = new ChangeEvent(this);
((CellEditorListener)listeners[i+1]).editingStopped(changeEvent);
}
}
}
protected void fireEditingCanceled() {
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==CellEditorListener.class) {
// Lazily create the event:
if (changeEvent == null)
changeEvent = new ChangeEvent(this);
((CellEditorListener)listeners[i+1]).editingCanceled(changeEvent);
}
}
}
// implements TableCellEditor
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
editorComponent = (JComponent)value;
return editorComponent;
}
}
}