import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Insets;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;
import javax.swing.text.JTextComponent;
import javax.swing.text.html.HTMLDocument.Iterator;
import com.sun.xml.internal.txw2.Document;
public class ImageListePanel extends JPanel implements ActionListener , ListSelectionListener
{
static final long serialVersionUID = 1L;
private SettingsPanel settings;
private JTextField homepageTF = new JTextField(" Imagename ");
private JComboBox rlsSourceDirectoryCB = new JComboBox();
private JButton btReset = new JButton("Html importieren");
private JButton btReset1 = new JButton("Liste laden");
private JButton saveBT = new JButton("Liste speichern");
private JButton pasteUrlBT = new JButton();
private JButton refreshBT = new JButton();
private DefaultListModel listModel = new DefaultListModel();
private JList liste = new JList(listModel);
private JScrollPane listbereich = new JScrollPane(liste);
private String[] spaltennamen = {"Status" , "Gruppe" , "Programm" , "Aufgabe" , "Datenträger" };
private String[][] tabellendaten = new String [700][5];
DefaultTableModel dm;
JTable tabelle;
private DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); // Format für 24-Stunden-Anzeige
private String str = dateFormat.format(new Date());
private Map<String, String> colormap = new HashMap<String, String>();
public ImageListePanel()
{
setLayout(null);
add(homepageTF);
add(btReset);
add(btReset1);
add(saveBT);
add(rlsSourceDirectoryCB);
add(pasteUrlBT);
add(refreshBT);
add(listbereich);
homepageTF.setBounds(826,440,159,30);
listbereich.setBounds(826,0,160,440);
btReset.setBounds(826,468,158,60);
btReset1.setBounds(826,529,158,60);
saveBT.setBounds(826,590,158,60);
btReset.setIcon(new ImageIcon("images/pasteurl.png"));
btReset1.setIcon(new ImageIcon("images/refresh.png"));
saveBT.setIcon(new ImageIcon("images/dir.png"));
homepageTF.setMargin(new Insets(1, 3, 1, 1));
btReset.setForeground(new Color(0,0,0));
btReset1.setForeground(new Color(0,0,0));
saveBT.setForeground(new Color(0,0,0));
btReset.setFont(new Font("Arial",Font.BOLD, 12));
btReset1.setFont(new Font("Arial",Font.BOLD, 12));
saveBT.setFont(new Font("Arial",Font.BOLD, 12));
rlsSourceDirectoryCB.setFont(new Font("Arial",Font.BOLD, 12));
dm = new DefaultTableModel (tabellendaten,spaltennamen);
tabelle = new JTable( dm ){
/**
*
*/
private static final long serialVersionUID = 1L;
public Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {
JLabel label = (JLabel)super.prepareRenderer(renderer, row, column);
String key = String.valueOf(row)+";"+String.valueOf(column);
String range = (String) colormap.get(key);
if(range != null){
String text = label.getText();
int start = Integer.parseInt(range.split(";")[0]);
int end = Integer.parseInt(range.split(";")[1]);
String color = range.split(";")[2];
label.setText("<html>"+text.substring(0, start)+"<font color=" +color+ ">"
+text.substring(start, end)+"</font>"+text.substring(end));
}
return label;
}
};
tabelle.setModel(new DefaultTableModel(new Object [700][5], spaltennamen)
{
private static final long serialVersionUID = 1L;
Class[] types = new Class [] {
String.class, String.class , String.class, String.class , String.class
};
public Class<?> getColumnClass(final int columnIndex) {
return types [columnIndex];
}
});
tabelle.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(final MouseEvent evt) {
Point p = evt.getPoint();
int row = tabelle.rowAtPoint(p);
int column = tabelle.columnAtPoint(p);
tabelle.editCellAt(row, column);
}
});
tabelle.setDefaultEditor(String.class, new TableEditor());
dm.setValueAt("ddd", 0, 0);
//tabelle.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tabelle.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
tabelle.setPreferredScrollableViewportSize(tabelle.getPreferredSize());
JScrollPane scrollPane = new JScrollPane( tabelle );
add(scrollPane);
scrollPane.setBounds(0,0,826,650);
tabelle.setRowHeight(25);
tabelle.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
tabelle.setAutoCreateRowSorter(true);
btReset.addActionListener(this);
btReset1.addActionListener(this);
saveBT.addActionListener(this);
pasteUrlBT.addActionListener(this);
refreshBT.addActionListener(this);
liste.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
liste.setVisibleRowCount(1);
liste.addListSelectionListener((ListSelectionListener) this);
listbereich.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
listbereich.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
liste.setCellRenderer(new Renderer());
listModel.addElement("MPG Lehrer 125");
listModel.addElement("AEG Schüler xp");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("AEG Schüler xp");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("AEG Schüler xp");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("AEG Schüler xp");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("AEG Schüler xp");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("AEG Schüler xp");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
setColumnWidth();
}
public void setSP(SettingsPanel object)
{
this.settings = object;
}
public void valueChanged( ListSelectionEvent e )
{
if(!e.getValueIsAdjusting())
{
homepageTF.setText(listModel.getElementAt(0).toString());
}
}
public void setColumnWidth()
{
tabelle.getColumnModel().getColumn(0).setPreferredWidth(40);
tabelle.getColumnModel().getColumn(1).setPreferredWidth(50);
tabelle.getColumnModel().getColumn(2).setPreferredWidth(100);
tabelle.getColumnModel().getColumn(3).setPreferredWidth(500);
tabelle.getColumnModel().getColumn(4).setPreferredWidth(100);
}
public void actionPerformed(final ActionEvent e)
{
if(e.getSource().equals(saveBT))
{
//saveBT.setEnabled(false);
}
Object source = e.getSource();
if(source == btReset1)
{
Iterator it = (Iterator) colormap.keySet().iterator();
while(it.hasNext())
{
String key = (String) it.next();
String value = colormap.get(key);
if(value.split(";")[2].equalsIgnoreCase("blue"))
{
it.remove();
}
}
tabelle.updateUI();
}else if (source == btReset)
{
colormap.clear();
tabelle.updateUI();
}else
{
for (String key : colormap.keySet())
{
String value = colormap.get(key);
if(value.split(";")[2].equalsIgnoreCase("blue"))
{
value = value.substring(0, value.lastIndexOf(";"))+";red";
colormap.put(key, value);
}
}
tabelle.updateUI();
}
}
// Creates highlights around all occurrences of pattern in textComp
public void highlight(final JTextComponent textComp, final int start, final int end)
{
// First remove all old highlights
removeHighlights(textComp);
try {
Highlighter hilite = textComp.getHighlighter();
Document doc = textComp.getDocument();
String text = doc.getText(0, doc.getLength());
// Add highlight using private painter
hilite.addHighlight(start, end, textPainter);
} catch (BadLocationException e) {
}
}
// Removes only our private highlights
public void removeHighlights(final JTextComponent textComp)
{
Highlighter hilite = textComp.getHighlighter();
Highlighter.Highlight[] hilites = hilite.getHighlights();
for (int i=0; i<hilites.length; i++) {
if (hilites[i].getPainter() instanceof TextPainter) {
hilite.removeHighlight(hilites[i]);
}
}
}
// An instance of the private subclass of the default highlight painter
private Highlighter.HighlightPainter textPainter = new TextPainter(selColor);
// A private subclass of the default highlight painter
class TextPainter extends DefaultHighlighter.DefaultHighlightPainter {
public TextPainter(final Color color) {
super(color);
}
}
}