Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
with
2,977 additions
and 0 deletions.
- +59 −0 admin/src/main/java/com/sport/client/panel/spielplan/ColorTableCellRender.java
- +217 −0 admin/src/main/java/com/sport/client/panel/spielplan/ErgebnissePanel.java
- +34 −0 admin/src/main/java/com/sport/client/panel/spielplan/MatchComboEntry.java
- +262 −0 admin/src/main/java/com/sport/client/panel/spielplan/SaetzeTable.java
- +152 −0 admin/src/main/java/com/sport/client/panel/spielplan/SaetzeTableModel.java
- +123 −0 admin/src/main/java/com/sport/client/panel/spielplan/SpielBlockEditPanel.java
- +420 −0 admin/src/main/java/com/sport/client/panel/spielplan/SpielEditPanel.java
- +62 −0 admin/src/main/java/com/sport/client/panel/spielplan/SpielTransferable.java
- +210 −0 admin/src/main/java/com/sport/client/panel/spielplan/SpieleTableModel.java
- +443 −0 admin/src/main/java/com/sport/client/panel/spielplan/SpielplanPanel.java
- +391 −0 admin/src/main/java/com/sport/client/panel/spielplan/SpielplanTable.java
- +31 −0 admin/src/main/java/com/sport/client/panel/spielplan/TeamComboEntry.java
- +182 −0 admin/src/main/java/com/sport/client/panel/turnier/SpielplaetzeTable.java
- +91 −0 admin/src/main/java/com/sport/client/panel/turnier/SpielplatzTableModel.java
- +300 −0 admin/src/main/java/com/sport/client/panel/turnier/TurnierPanel.java
@@ -0,0 +1,59 @@ | ||
package com.sport.client.panel.spielplan; | ||
|
||
import java.awt.Color; | ||
import java.awt.Component; | ||
|
||
import javax.swing.JTable; | ||
import javax.swing.table.DefaultTableCellRenderer; | ||
|
||
import com.sport.core.bo.SpielplanTableEntryBO; | ||
import com.sport.core.bo.SportMatch; | ||
|
||
/** | ||
* Renders a cell in the color of the group of the match that it represents | ||
* | ||
* @author Ronny | ||
* | ||
*/ | ||
public class ColorTableCellRender extends DefaultTableCellRenderer { | ||
|
||
private static final long serialVersionUID = 5817071841157726787L; | ||
|
||
@Override | ||
public Component getTableCellRendererComponent(JTable table, Object value, | ||
boolean isSelected, boolean hasFocus, int row, int column) { | ||
|
||
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, | ||
row, column); | ||
|
||
if (isSelected && (column == table.getSelectedColumn())) { | ||
return this; | ||
} | ||
|
||
int col = table.convertColumnIndexToModel(column); | ||
if ((col % 2 == 1) && (col > 0)) { | ||
SpieleTableModel dataModel = ((SpielplanTable) table).dataModel; | ||
SpielplanTableEntryBO tableEntry = (SpielplanTableEntryBO) dataModel | ||
.getData().get(row); | ||
|
||
SportMatch spielBO = tableEntry.getSpiel((col - 1) / 2); | ||
String color = "#ffffff"; //$NON-NLS-1$ | ||
if (spielBO != null) { | ||
color = spielBO.getGroup().getColor(); | ||
} | ||
|
||
// Zerlegen der HTML-Farbangabe | ||
int[] part = new int[3]; | ||
part[0] = Integer.parseInt(color.substring(1, 3), 16); | ||
part[1] = Integer.parseInt(color.substring(3, 5), 16); | ||
part[2] = Integer.parseInt(color.substring(5, 7), 16); | ||
|
||
setBackground(new Color(part[0], part[1], part[2])); | ||
} else { | ||
setBackground(Color.white); | ||
setForeground(Color.black); | ||
} | ||
return this; | ||
} | ||
|
||
} |
@@ -0,0 +1,217 @@ | ||
package com.sport.client.panel.spielplan; | ||
|
||
import java.awt.BorderLayout; | ||
import java.awt.event.KeyEvent; | ||
import java.awt.event.KeyListener; | ||
import java.awt.event.MouseEvent; | ||
import java.awt.event.MouseListener; | ||
import java.util.Vector; | ||
|
||
import javax.swing.BorderFactory; | ||
import javax.swing.JPanel; | ||
import javax.swing.JScrollPane; | ||
import javax.swing.JSplitPane; | ||
import javax.swing.event.ListSelectionEvent; | ||
import javax.swing.event.ListSelectionListener; | ||
|
||
|
||
import org.apache.log4j.Logger; | ||
|
||
import com.sport.client.VolleyFrame; | ||
import com.sport.client.panel.VolleyPanel; | ||
import com.sport.core.bo.Field; | ||
import com.sport.core.bo.SpielplanTableEntryBO; | ||
import com.sport.core.bo.SportMatch; | ||
import com.sport.core.bo.Tournament; | ||
import com.sport.server.remote.TurnierRemote; | ||
|
||
/** | ||
* @author ronny | ||
* | ||
* To change the template for this generated type comment go to | ||
* Window>Preferences>Java>Code Generation>Code and Comments | ||
*/ | ||
public class ErgebnissePanel extends VolleyPanel { | ||
|
||
private static final Logger LOG = Logger.getLogger(ErgebnissePanel.class); | ||
|
||
private static final long serialVersionUID = -278743311325514535L; | ||
|
||
protected SpielplanTable spielplanTable; | ||
private SaetzeTable saetzeTable = null; | ||
private JScrollPane saetzeTableContainer = new JScrollPane(); | ||
|
||
public ErgebnissePanel(VolleyFrame parentFrame) { | ||
super(parentFrame); | ||
|
||
spielplanTable = new SpielplanTable(this, true, null, new Listener(), | ||
new SpielplanSelectionListener()); | ||
spielplanTable.setDragEnabled(false); | ||
|
||
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); | ||
splitPane.setBorder(BorderFactory.createEmptyBorder()); | ||
splitPane.setContinuousLayout(true); | ||
splitPane.setOneTouchExpandable(true); | ||
splitPane.setDividerLocation(200); | ||
|
||
splitPane.add(new JScrollPane(spielplanTable)); | ||
splitPane.add(saetzeTableContainer); | ||
|
||
mainPanel.setLayout(new BorderLayout()); | ||
mainPanel.add(splitPane, BorderLayout.CENTER); | ||
} | ||
|
||
public void loadData(Tournament aTurnierBO) { | ||
this.turnierBO = aTurnierBO; | ||
dirty = false; | ||
|
||
try { | ||
Vector<SpielplanTableEntryBO> spielplanTableEntries = TurnierRemote | ||
.getSpielplanTableEntrysByTurnierBO(aTurnierBO); | ||
spielplanTable.dataModel.setData(spielplanTableEntries); | ||
|
||
// M�gliche Spielplaetze setzen | ||
Vector<Field> spielplaetze = TurnierRemote | ||
.getSpielplaetzeByTurnierid(aTurnierBO.getId()); | ||
spielplanTable.setSpielplaetze(spielplaetze); | ||
|
||
spielplanTable.updateUI(); // f�r Reset! | ||
spielplanTable.clearSelection(); | ||
updateErgebnisEditPanel(); | ||
} catch (Exception e) { | ||
LOG.error("Can't read results from server.", e); | ||
} | ||
} | ||
|
||
public void save() { | ||
dirty = false; | ||
|
||
// Spiele aus TableEntry nach Vector umspeichern | ||
Vector<SportMatch> data = new Vector<SportMatch>(); | ||
|
||
// alle Zeilen | ||
for (SpielplanTableEntryBO tableEntry : spielplanTable.dataModel | ||
.getData()) { | ||
// alle Spalten | ||
for (SportMatch spielBO : tableEntry.getSpiele()) { | ||
|
||
if (spielBO != null) | ||
data.add(spielBO); | ||
} | ||
} | ||
|
||
try { | ||
TurnierRemote.setSpieleByTurnierid(turnierBO.getId(), data | ||
.toArray()); | ||
} catch (Exception e) { | ||
LOG.error("Can't save results to server.", e); | ||
} | ||
} | ||
|
||
/** | ||
* Aktuallisiert die Detail-Ansicht f�r Spiel | ||
* | ||
*/ | ||
public void updateErgebnisEditPanel() { | ||
int row = spielplanTable.getSelectedRow(); | ||
int col = spielplanTable.getSelectedColumn(); | ||
|
||
// ggf. Reste speichern | ||
if (saetzeTable != null) { | ||
if (saetzeTable.getEditingRow() > -1) { | ||
saetzeTable.getCellEditor(saetzeTable.getEditingRow(), | ||
saetzeTable.getEditingColumn()).stopCellEditing(); | ||
} | ||
saetzeTableContainer.setViewportView(new JPanel()); | ||
spielplanTable.repaint(); | ||
} | ||
|
||
saetzeTable = null; | ||
SportMatch spielBO = null; | ||
|
||
if (col > -1 | ||
&& (row < spielplanTable.dataModel.getData().size() && (col > 0))) { | ||
SpielplanTableEntryBO tableEntry = (SpielplanTableEntryBO) spielplanTable.dataModel | ||
.getData().get(row); | ||
|
||
spielBO = tableEntry.getSpiel((col - 1) / 2); | ||
if (spielBO != null) { | ||
saetzeTable = new SaetzeTable(this, spielBO); | ||
saetzeTableContainer.setViewportView(saetzeTable); | ||
} | ||
} | ||
|
||
} | ||
|
||
class Listener implements KeyListener { | ||
// Select row in the saetzeTable | ||
private boolean selectLastRowSaetze() { | ||
// for matches -> jump to sets | ||
if (spielplanTable.getSelectedColumn() > 0) { | ||
int rowCount = saetzeTable.getRowCount(); | ||
if (rowCount > 0) { | ||
saetzeTable.requestFocusInWindow(); | ||
saetzeTable.changeSelection(rowCount - 1, | ||
SaetzeTableModel.COL_PUNKTE1, false, false); | ||
return true; | ||
} | ||
} | ||
return false; | ||
} | ||
|
||
public void keyPressed(KeyEvent e) { | ||
if (e.getKeyCode() == KeyEvent.VK_INSERT) { | ||
saetzeTable.addSatz(); | ||
selectLastRowSaetze(); | ||
} else if (e.getKeyCode() == KeyEvent.VK_TAB) { | ||
if (selectLastRowSaetze()) { | ||
// reverse the effect of the implicit tab | ||
int row = spielplanTable.getSelectedRow(); | ||
int col = spielplanTable.getSelectedColumn(); | ||
spielplanTable.changeSelection(row, col - 1, false, false); | ||
} | ||
} | ||
} | ||
|
||
public void keyTyped(KeyEvent e) { | ||
} | ||
|
||
public void keyReleased(KeyEvent e) { | ||
updateErgebnisEditPanel(); | ||
} | ||
} | ||
|
||
/** | ||
* Wird ausgef�hrt, wenn Nutzer einen anderen Spiel-Eintrag aus der Tabelle | ||
* w�hlt | ||
* | ||
* @author ronny | ||
* | ||
* To change the template for this generated type comment go to | ||
* Window>Preferences>Java>Code Generation>Code and Comments | ||
*/ | ||
class SpielplanSelectionListener implements ListSelectionListener, | ||
MouseListener { | ||
|
||
public void valueChanged(ListSelectionEvent e) { | ||
} | ||
|
||
public void mouseClicked(MouseEvent e) { | ||
updateErgebnisEditPanel(); | ||
} | ||
|
||
public void mouseEntered(MouseEvent e) { | ||
} | ||
|
||
public void mouseExited(MouseEvent e) { | ||
} | ||
|
||
public void mousePressed(MouseEvent e) { | ||
} | ||
|
||
public void mouseReleased(MouseEvent e) { | ||
} | ||
|
||
} | ||
|
||
} |
@@ -0,0 +1,34 @@ | ||
package com.sport.client.panel.spielplan; | ||
|
||
import com.sport.analyzer.impl.MannschaftAnalyzerImpl; | ||
import com.sport.core.bo.SportMatch; | ||
|
||
|
||
/** | ||
* Entry for combo box of matches. Provides correct rendering of the match name, | ||
* which relies on the analyzer. | ||
* | ||
* @author Ronny | ||
* | ||
*/ | ||
public class MatchComboEntry { | ||
|
||
private SportMatch match; | ||
|
||
public MatchComboEntry(SportMatch match) { | ||
this.match = match; | ||
} | ||
|
||
public SportMatch getMatch() { | ||
return match; | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return MannschaftAnalyzerImpl.getInstance().getName(match.getTeam1()) | ||
+ " - " | ||
+ MannschaftAnalyzerImpl.getInstance() | ||
.getName(match.getTeam2()); | ||
} | ||
|
||
} |
Oops, something went wrong.