142 lines
3.8 KiB
Java
142 lines
3.8 KiB
Java
package client.components.formEntry;
|
|
|
|
import client.modules.spellChecker.KnownData;
|
|
import client.persistence.*;
|
|
|
|
import javax.swing.*;
|
|
import javax.swing.event.ListSelectionEvent;
|
|
import javax.swing.event.ListSelectionListener;
|
|
import java.awt.*;
|
|
import java.awt.event.*;
|
|
|
|
public class FormEntry extends JPanel {
|
|
|
|
private JList rowNumberList;
|
|
private FormTable formTable;
|
|
private JSplitPane splitPane;
|
|
|
|
private Cell currentCell;
|
|
private String[][] model;
|
|
private String[] columnNames;
|
|
private Integer[] rowIds;
|
|
|
|
private ImageState imageState;
|
|
|
|
public FormEntry(ImageState imageState) {
|
|
this.imageState = imageState;
|
|
|
|
this.model = this.imageState.getModel();
|
|
this.columnNames = this.imageState.getColumnNames();
|
|
|
|
this.imageState.addNewProjectListener(newProjectListener);
|
|
|
|
setupView();
|
|
}
|
|
|
|
private void setupView() {
|
|
this.setLayout(new GridLayout(1,1));
|
|
|
|
this.rowIds = new Integer[model.length];
|
|
generateListData();
|
|
|
|
splitPane = new JSplitPane();
|
|
splitPane.setDividerLocation(50);
|
|
splitPane.setBorder(null);
|
|
|
|
formTable = new FormTable(imageState);
|
|
|
|
splitPane.setRightComponent(new JScrollPane(formTable));
|
|
|
|
rowNumberList = new JList(rowIds);
|
|
rowNumberList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
|
rowNumberList.setLayoutOrientation(JList.VERTICAL);
|
|
rowNumberList.setVisibleRowCount(-1);
|
|
rowNumberList.addListSelectionListener(listSelectionListener);
|
|
splitPane.setLeftComponent(new JScrollPane(rowNumberList));
|
|
|
|
|
|
this.add(splitPane);
|
|
|
|
imageState.addListener(imageStateListener);
|
|
|
|
}
|
|
|
|
public void generateListData() {
|
|
for(int i = 0; i < rowIds.length; i ++) {
|
|
rowIds[i] = (i+1);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Dimension getMinimumSize() {
|
|
Dimension dim = super.getMinimumSize();
|
|
dim.width = 350;
|
|
return dim;
|
|
}
|
|
|
|
private ImageStateListener imageStateListener = new ImageStateListener() {
|
|
@Override
|
|
public void valueChanged(Cell cell, String newValue) {
|
|
int row = cell.getRecord();
|
|
int column = cell.getField();
|
|
|
|
rowNumberList.setSelectedIndex(row);
|
|
formTable.setValue(newValue, row, column);
|
|
|
|
splitPane.repaint();
|
|
}
|
|
|
|
@Override
|
|
public void selectedCellChanged(Cell newSelectedCell) {
|
|
int row = newSelectedCell.getRecord();
|
|
int column = newSelectedCell.getField();
|
|
|
|
currentCell = newSelectedCell;
|
|
|
|
rowNumberList.setSelectedIndex(row);
|
|
formTable.setCurrentCell(row, column);
|
|
|
|
splitPane.repaint();
|
|
}
|
|
};
|
|
|
|
private NewProjectListener newProjectListener = new NewProjectListener() {
|
|
@Override
|
|
public void hasNewProject() {
|
|
model = imageState.getModel();
|
|
columnNames = imageState.getColumnNames();
|
|
|
|
formTable.setDeactivated(true);
|
|
formTable = new FormTable(imageState);
|
|
splitPane.setRightComponent(new JScrollPane(formTable));
|
|
|
|
rowIds = new Integer[model.length];
|
|
generateListData();
|
|
rowNumberList.setListData(rowIds);
|
|
}
|
|
};
|
|
|
|
private ListSelectionListener listSelectionListener = new ListSelectionListener() {
|
|
@Override
|
|
public void valueChanged(ListSelectionEvent e) {
|
|
if(!getParent().getParent().getParent().isVisible()) return;
|
|
|
|
int newRow = rowNumberList.getSelectedIndex();
|
|
|
|
Cell cell = new Cell();
|
|
cell.setRecord(newRow);
|
|
cell.setField(currentCell.getField());
|
|
|
|
imageState.setSelectedCell(cell);
|
|
repaint();
|
|
|
|
}
|
|
};
|
|
|
|
public void becameVisible() {
|
|
formTable.setCurrentCellForce();
|
|
}
|
|
|
|
|
|
}
|