school/cs240/record-indexer/src/client/components/fieldHelp/FieldHelp.java

78 lines
2.1 KiB
Java

package client.components.fieldHelp;
import client.communication.Communicator;
import client.persistence.Cell;
import client.persistence.ImageState;
import client.persistence.ImageStateListener;
import client.persistence.NewProjectListener;
import shared.communication.common.Fields;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
public class FieldHelp extends JPanel {
private ImageState imageState;
private String[] columns;
private int currentColumn;
private JEditorPane editorPane;
private Communicator communicator;
public FieldHelp(ImageState imageState, Communicator communicator) {
this.imageState = imageState;
this.communicator = communicator;
this.currentColumn = 0;
this.columns = imageState.getColumnNames();
setupView();
this.imageState.addListener(imageStateListener);
this.imageState.addNewProjectListener(newProjectListener);
}
private void setupView() {
editorPane = new JEditorPane();
editorPane.setContentType("text/html");
editorPane.setEditable(false);
this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
this.add(new JScrollPane(editorPane), BorderLayout.CENTER);
}
private void updateView() {
if(!imageState.isHasImage()) return;
Fields field = imageState.getFieldsMetaData().get(currentColumn);
String path = communicator.getServerPath() + field.getHelpUrl();
try {
editorPane.setPage(path);
} catch (IOException e) {
e.printStackTrace();
}
}
private ImageStateListener imageStateListener = new ImageStateListener() {
@Override
public void valueChanged(Cell cell, String newValue) {
}
@Override
public void selectedCellChanged(Cell newSelectedCell) {
currentColumn = newSelectedCell.getField();
updateView();
}
};
private NewProjectListener newProjectListener = new NewProjectListener() {
@Override
public void hasNewProject() {
editorPane.setText("");
}
};
}