dispose dialog when escape
handling multiple projection on same slot and room
This commit is contained in:
parent
34b1b1d55a
commit
a9e867237a
8 changed files with 340 additions and 68 deletions
|
@ -117,4 +117,8 @@ public class Projection extends Table {
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return getMovie().getName();
|
return getMovie().getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String[] toArray() {
|
||||||
|
return new String[]{getMovie().toString(), getCompetition().toString(), getRoom().toString(), getStartDate().toString(), getSlot().toString()};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,9 @@ import DB.Projection;
|
||||||
import DB.Slot;
|
import DB.Slot;
|
||||||
import Exceptions.NotFoundInTable;
|
import Exceptions.NotFoundInTable;
|
||||||
import Exceptions.ProjectionNotSpecified;
|
import Exceptions.ProjectionNotSpecified;
|
||||||
|
import GUI.Agenda.Model.AgendaTableModel;
|
||||||
import GUI.ProjectionHandler;
|
import GUI.ProjectionHandler;
|
||||||
|
import GUI.ProjectionSelecter;
|
||||||
import GUI.Types.CompetType;
|
import GUI.Types.CompetType;
|
||||||
import GUI.Types.ProjectionType;
|
import GUI.Types.ProjectionType;
|
||||||
|
|
||||||
|
@ -83,11 +85,12 @@ public class Agenda extends JPanel {
|
||||||
public int getSize() {
|
public int getSize() {
|
||||||
return headers.length;
|
return headers.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getElementAt(int index) {
|
public Object getElementAt(int index) {
|
||||||
return headers[index];
|
return headers[index];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
TableModel dm = new TableModel(day, currentPage);
|
AgendaTableModel dm = new AgendaTableModel(day, currentPage);
|
||||||
table = new JTable(dm) {
|
table = new JTable(dm) {
|
||||||
@Override
|
@Override
|
||||||
public boolean getScrollableTracksViewportHeight() {
|
public boolean getScrollableTracksViewportHeight() {
|
||||||
|
@ -98,7 +101,7 @@ public class Agenda extends JPanel {
|
||||||
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||||
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
|
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
|
||||||
table.setRowHeight(100);
|
table.setRowHeight(100);
|
||||||
Agenda tmp = this;
|
agenda = this;
|
||||||
table.addMouseListener(new MouseInputAdapter() {
|
table.addMouseListener(new MouseInputAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void mouseReleased(MouseEvent mouseEvent) {
|
public void mouseReleased(MouseEvent mouseEvent) {
|
||||||
|
@ -110,7 +113,7 @@ public class Agenda extends JPanel {
|
||||||
Projection projection = null;
|
Projection projection = null;
|
||||||
if (currentCellValue.getClass() == Projection.class)
|
if (currentCellValue.getClass() == Projection.class)
|
||||||
projection = (Projection) currentCellValue;
|
projection = (Projection) currentCellValue;
|
||||||
PopUpProjection popUpProjection = new PopUpProjection(projection, tmp);
|
PopUpProjection popUpProjection = new PopUpProjection(projection, agenda);
|
||||||
popUpProjection.show(mouseEvent.getComponent(), mouseEvent.getX(), mouseEvent.getY());
|
popUpProjection.show(mouseEvent.getComponent(), mouseEvent.getX(), mouseEvent.getY());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,13 +129,15 @@ public class Agenda extends JPanel {
|
||||||
if (currentCellValue.getClass() == Projection.class)
|
if (currentCellValue.getClass() == Projection.class)
|
||||||
projection = (Projection) currentCellValue;
|
projection = (Projection) currentCellValue;
|
||||||
if (mouseEvent.getClickCount() == 2 && table.getSelectedRow() != -1) {
|
if (mouseEvent.getClickCount() == 2 && table.getSelectedRow() != -1) {
|
||||||
if (projection == null) {
|
if (projection == null && currentCellValue.getClass() != String.class) {
|
||||||
|
ProjectionSelecter dialog = new ProjectionSelecter((ArrayList<Projection>) currentCellValue, agenda);
|
||||||
|
dialog.pack();
|
||||||
|
dialog.setVisible(true);
|
||||||
|
} else if (projection == null)
|
||||||
openDialog(ProjectionType.ADD);
|
openDialog(ProjectionType.ADD);
|
||||||
} else {
|
else openDialog(ProjectionType.EDIT, projection);
|
||||||
openDialog(ProjectionType.EDIT, projection);
|
|
||||||
}
|
|
||||||
} else if (mouseEvent.isPopupTrigger()) {
|
} else if (mouseEvent.isPopupTrigger()) {
|
||||||
PopUpProjection popUpProjection = new PopUpProjection(projection, tmp);
|
PopUpProjection popUpProjection = new PopUpProjection(projection, agenda);
|
||||||
popUpProjection.show(mouseEvent.getComponent(), mouseEvent.getX(), mouseEvent.getY());
|
popUpProjection.show(mouseEvent.getComponent(), mouseEvent.getX(), mouseEvent.getY());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,7 +201,15 @@ public class Agenda extends JPanel {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
table.setValueAt(projection, row, column);
|
Object tableValue = table.getValueAt(row, column);
|
||||||
|
if (tableValue.getClass() == Projection.class) {
|
||||||
|
Projection[] projections = {(Projection) tableValue, projection};
|
||||||
|
table.setValueAt(projections, row, column);
|
||||||
|
} else if (tableValue.getClass() != String.class) {
|
||||||
|
((AgendaTableModel) table.getModel()).addValueAt(projection, row, column);
|
||||||
|
} else {
|
||||||
|
table.setValueAt(projection, row, column);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCurrentPage() {
|
public int getCurrentPage() {
|
||||||
|
|
93
src/main/java/GUI/Agenda/Model/AgendaTableModel.java
Normal file
93
src/main/java/GUI/Agenda/Model/AgendaTableModel.java
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
package GUI.Agenda.Model;
|
||||||
|
|
||||||
|
import Config.Config;
|
||||||
|
import DB.Projection;
|
||||||
|
|
||||||
|
import javax.swing.table.AbstractTableModel;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
public class AgendaTableModel extends AbstractTableModel {
|
||||||
|
private LocalDate[] columnNames;
|
||||||
|
private Object[][] data;
|
||||||
|
private int day;
|
||||||
|
|
||||||
|
public AgendaTableModel(int day, int currentPage) {
|
||||||
|
this.day = day;
|
||||||
|
columnNames = new LocalDate[this.day];
|
||||||
|
data = new Object[5][this.day];
|
||||||
|
|
||||||
|
LocalDate startDate = Config.getStartDate();
|
||||||
|
|
||||||
|
for (int i = 0; i < this.day; i++) {
|
||||||
|
this.columnNames[i] = startDate.plusDays(i + 5 * (currentPage));
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 5; i++) {
|
||||||
|
Arrays.fill(data[i], "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRowCount() {
|
||||||
|
return data.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getColumnCount() {
|
||||||
|
return columnNames.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getColumn(int column) {
|
||||||
|
return columnNames[column];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getColumnName(int column) {
|
||||||
|
return columnNames[column].toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||||
|
Object dataObject = data[rowIndex][columnIndex];
|
||||||
|
if (dataObject.getClass() == DB.Projection[].class) {
|
||||||
|
ArrayList<Projection> projections = new ArrayList<Projection>() {
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder builder = new StringBuilder("<html>");
|
||||||
|
for (int i = 0; i < size(); i++) {
|
||||||
|
builder.append(String.format("%s<br>", get(i)));
|
||||||
|
}
|
||||||
|
builder.append("</html>");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Projection[] dataArray = (Projection[]) dataObject;
|
||||||
|
projections.addAll(Arrays.asList(dataArray));
|
||||||
|
return projections;
|
||||||
|
}
|
||||||
|
return data[rowIndex][columnIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addValueAt(Projection projection, int rowIndex, int columnIndex) {
|
||||||
|
Projection[] projections = (Projection[]) data[rowIndex][columnIndex];
|
||||||
|
ArrayList<Projection> projectionsArrayList = new ArrayList<>(Arrays.asList(projections)) {
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder builder = new StringBuilder("<html>");
|
||||||
|
for (int i = 0; i < size(); i++) {
|
||||||
|
builder.append(String.format("%s<br>", get(i)));
|
||||||
|
}
|
||||||
|
builder.append("</html>");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
projectionsArrayList.add(projection);
|
||||||
|
setValueAt(projectionsArrayList, rowIndex, columnIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||||
|
data[rowIndex][columnIndex] = aValue;
|
||||||
|
}
|
||||||
|
}
|
47
src/main/java/GUI/Agenda/Model/ProjectionTableModel.java
Normal file
47
src/main/java/GUI/Agenda/Model/ProjectionTableModel.java
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
package GUI.Agenda.Model;
|
||||||
|
|
||||||
|
import DB.Projection;
|
||||||
|
|
||||||
|
import javax.swing.table.AbstractTableModel;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class ProjectionTableModel extends AbstractTableModel {
|
||||||
|
private String[] columnNames = {"Movie", "Competition", "Room", "Start", "Slot"};
|
||||||
|
private Projection[] data;
|
||||||
|
|
||||||
|
public ProjectionTableModel(ArrayList<Projection> projections) {
|
||||||
|
data = new Projection[projections.size()];
|
||||||
|
for (int i = 0; i < projections.size(); i++) {
|
||||||
|
data[i] = projections.get(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRowCount() {
|
||||||
|
return data.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getColumnCount() {
|
||||||
|
return columnNames.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getColumnName(int column) {
|
||||||
|
return columnNames[column];
|
||||||
|
}
|
||||||
|
|
||||||
|
public Projection getRowAt(int row) {
|
||||||
|
return (Projection) data[row];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||||
|
return data[rowIndex].toArray()[columnIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||||
|
data[rowIndex] = (Projection) aValue;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,57 +0,0 @@
|
||||||
package GUI.Agenda;
|
|
||||||
|
|
||||||
import Config.Config;
|
|
||||||
|
|
||||||
import javax.swing.table.AbstractTableModel;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
public class TableModel extends AbstractTableModel {
|
|
||||||
private LocalDate[] columnNames;
|
|
||||||
private Object[][] data;
|
|
||||||
private int day;
|
|
||||||
|
|
||||||
public TableModel(int day, int currentPage) {
|
|
||||||
this.day = day;
|
|
||||||
columnNames = new LocalDate[this.day];
|
|
||||||
data = new Object[5][this.day];
|
|
||||||
|
|
||||||
LocalDate startDate = Config.getStartDate();
|
|
||||||
|
|
||||||
for (int i = 0; i < this.day; i++) {
|
|
||||||
this.columnNames[i] = startDate.plusDays(i + 5 * (currentPage));
|
|
||||||
}
|
|
||||||
for (int i = 0; i < 5; i++) {
|
|
||||||
Arrays.fill(data[i], "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getRowCount() {
|
|
||||||
return data.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getColumnCount() {
|
|
||||||
return columnNames.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDate getColumn(int column) {
|
|
||||||
return columnNames[column];
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getColumnName(int column) {
|
|
||||||
return columnNames[column].toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
|
||||||
return data[rowIndex][columnIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
|
||||||
data[rowIndex][columnIndex] = aValue;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -9,8 +9,7 @@ import GUI.Types.ProjectionType;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.WindowAdapter;
|
import java.awt.event.*;
|
||||||
import java.awt.event.WindowEvent;
|
|
||||||
import java.sql.Date;
|
import java.sql.Date;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -97,6 +96,15 @@ public class ProjectionHandler extends JDialog {
|
||||||
slotComboBox.addActionListener(actionEvent -> updateRooms());
|
slotComboBox.addActionListener(actionEvent -> updateRooms());
|
||||||
cancelButton.addActionListener(actionEvent -> dispose());
|
cancelButton.addActionListener(actionEvent -> dispose());
|
||||||
confirmButton.addActionListener(actionEvent -> confirm());
|
confirmButton.addActionListener(actionEvent -> confirm());
|
||||||
|
contentPane.registerKeyboardAction(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onCancel() {
|
||||||
|
dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateCompetitions() {
|
private void updateCompetitions() {
|
||||||
|
|
81
src/main/java/GUI/ProjectionSelecter.form
Normal file
81
src/main/java/GUI/ProjectionSelecter.form
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="GUI.ProjectionSelecter">
|
||||||
|
<grid id="cbd77" binding="contentPane" layout-manager="GridLayoutManager" row-count="2" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="10" left="10" bottom="10" right="10"/>
|
||||||
|
<constraints>
|
||||||
|
<xy x="48" y="54" width="436" height="297"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<grid id="94766" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints>
|
||||||
|
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<hspacer id="98af6">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
</hspacer>
|
||||||
|
<grid id="9538f" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="true" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<component id="e7465" class="javax.swing.JButton" binding="buttonOK">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="OK"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
<component id="5723f" class="javax.swing.JButton" binding="buttonCancel">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="Cancel"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
<grid id="e3588" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
|
||||||
|
<preferred-size width="-1" height="200"/>
|
||||||
|
</grid>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<background color="-14273992"/>
|
||||||
|
</properties>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<scrollpane id="90da7" binding="scrollPane">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="7" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<component id="e297b" class="javax.swing.JTable" binding="table1" default-binding="true">
|
||||||
|
<constraints/>
|
||||||
|
<properties/>
|
||||||
|
</component>
|
||||||
|
</children>
|
||||||
|
</scrollpane>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</form>
|
83
src/main/java/GUI/ProjectionSelecter.java
Normal file
83
src/main/java/GUI/ProjectionSelecter.java
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
package GUI;
|
||||||
|
|
||||||
|
import DB.Projection;
|
||||||
|
import GUI.Agenda.Agenda;
|
||||||
|
import GUI.Agenda.Model.ProjectionTableModel;
|
||||||
|
import GUI.Types.ProjectionType;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class ProjectionSelecter extends JDialog {
|
||||||
|
private JPanel contentPane;
|
||||||
|
private JButton buttonOK;
|
||||||
|
private JButton buttonCancel;
|
||||||
|
private JTable table1;
|
||||||
|
private JScrollPane scrollPane;
|
||||||
|
private Projection currentProjection;
|
||||||
|
private Agenda agenda;
|
||||||
|
|
||||||
|
public ProjectionSelecter(ArrayList<Projection> projections, Agenda agenda) {
|
||||||
|
this.agenda = agenda;
|
||||||
|
setContentPane(contentPane);
|
||||||
|
setModal(true);
|
||||||
|
setLocationRelativeTo(null);
|
||||||
|
setTitle("Projection Selecter");
|
||||||
|
getRootPane().setDefaultButton(buttonOK);
|
||||||
|
ProjectionTableModel pTM = new ProjectionTableModel(projections);
|
||||||
|
table1.setModel(pTM);
|
||||||
|
buttonOK.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
onOK();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
buttonCancel.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
onCancel();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
table1.addMouseListener(
|
||||||
|
new MouseAdapter() {
|
||||||
|
@Override
|
||||||
|
public void mousePressed(MouseEvent e) {
|
||||||
|
JTable table = (JTable) e.getSource();
|
||||||
|
Point point = e.getPoint();
|
||||||
|
int row = table.rowAtPoint(point);
|
||||||
|
if (e.getClickCount() == 2 && table.getSelectedRow() != -1) {
|
||||||
|
currentProjection = ((ProjectionTableModel) table.getModel()).getRowAt(row);
|
||||||
|
agenda.openDialog(ProjectionType.EDIT, currentProjection);
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
// call onCancel() when cross is clicked
|
||||||
|
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
||||||
|
addWindowListener(new WindowAdapter() {
|
||||||
|
public void windowClosing(WindowEvent e) {
|
||||||
|
onCancel();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// call onCancel() on ESCAPE
|
||||||
|
contentPane.registerKeyboardAction(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
onCancel();
|
||||||
|
}
|
||||||
|
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onOK() {
|
||||||
|
agenda.openDialog(ProjectionType.EDIT, currentProjection);
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onCancel() {
|
||||||
|
// add your code here if necessary
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in a new issue