package org.rr.jeborker.gui;
import java.awt.Point;
import javax.swing.JFrame;
import org.rr.jeborker.app.preferences.APreferenceStore;
import org.rr.jeborker.app.preferences.PreferenceStoreFactory;
public class LoggerController {
private static final String LOG_DIALOG_LOCATION_Y = "logDialogLocationY";
private static final String LOG_DIALOG_LOCATION_X = "logDialogLocationX";
private static final String LOG_DIALOG_SIZE_HEIGHT = "logDialogSizeHeight";
private static final String LOG_DIALOG_SIZE_WIDTH = "logDialogSizeWidth";
private static LoggerView loggerView = null;
private JFrame mainWindow;
public LoggerController(JFrame mainWindow) {
this.mainWindow = mainWindow;
}
static LoggerController getInstance(JFrame mainWindow) {
LoggerController controller = new LoggerController(mainWindow);
return controller;
}
public void showLoggerDialog() {
LoggerView view = getView();
view.setVisible(true);
}
private LoggerView getView() {
if (loggerView == null) {
loggerView = new LoggerView(mainWindow, this);
this.initialize();
}
return loggerView;
}
private void initialize() {
restoreProperties();
}
public void close() {
storeProperties();
loggerView.setVisible(false);
loggerView.dispose();
}
private void storeProperties() {
final APreferenceStore preferenceStore = PreferenceStoreFactory.getPreferenceStore(PreferenceStoreFactory.DB_STORE);
preferenceStore.addGenericEntryAsNumber(LOG_DIALOG_SIZE_WIDTH, getView().getSize().width);
preferenceStore.addGenericEntryAsNumber(LOG_DIALOG_SIZE_HEIGHT, getView().getSize().height);
preferenceStore.addGenericEntryAsNumber(LOG_DIALOG_LOCATION_X, getView().getLocation().x);
preferenceStore.addGenericEntryAsNumber(LOG_DIALOG_LOCATION_Y, getView().getLocation().y);
}
private void restoreProperties() {
restoreWindowSizeProperties();
restoreWindowLocationProperties();
}
private void restoreWindowLocationProperties() {
APreferenceStore preferenceStore = PreferenceStoreFactory.getPreferenceStore(PreferenceStoreFactory.DB_STORE);
Point entryAsScreenLocation = preferenceStore.getGenericEntryAsScreenLocation(LOG_DIALOG_LOCATION_X, LOG_DIALOG_LOCATION_Y);
if (entryAsScreenLocation != null) {
getView().setLocation(entryAsScreenLocation);
}
}
private void restoreWindowSizeProperties() {
APreferenceStore preferenceStore = PreferenceStoreFactory.getPreferenceStore(PreferenceStoreFactory.DB_STORE);
Number metadataDialogSizeWidth = preferenceStore.getGenericEntryAsNumber(LOG_DIALOG_SIZE_WIDTH);
Number metadataDialogSizeHeight = preferenceStore.getGenericEntryAsNumber(LOG_DIALOG_SIZE_HEIGHT);
if (metadataDialogSizeWidth != null && metadataDialogSizeHeight != null) {
getView().setSize(metadataDialogSizeWidth.intValue(), metadataDialogSizeHeight.intValue());
}
}
}