CIB JView technischer Leitfaden
Benutzereinstellungen speichern und laden
Im JView besteht die Möglichkeit, verschiedene benutzerspezifische Einstellungen nach dem Beenden zu speichern und sie nach dem erneuten Start des JView wieder herzustellen.
Durch die Property ICibApplication.PROPERTY_USER_PREFERENCES_FILE wird der Name der Datei angegeben, in der die Benutzereinstellungen gespeichert werden sollen. Das Setzen dieser Property ist Voraussetzung, dass überhaupt Benutzereinstellungen gespeichert werden.
Die untenstehende Tabelle zeigt, welche Benutzereinstellungen gespeichert werden können. Darüber hinaus kann durch weitere Properties festgelegt werden, ob einzelne Einstellungen gespeichert werden oder nicht.
Benutzereinstellung |
Property zum (De-)Aktivieren des Speicherns |
Fensterposition und -größe |
ICibApplication.PROPERTY_RESTORE_WINDOW_BOUNDS_ENABLED |
Toolbar-Position |
Wird derzeit immer gespeichert, falls UserPreferences aktiviert |
Seitenansicht einblenden |
Wird derzeit immer gespeichert, falls UserPreferences aktiviert |
Selektierter Reiter in der Seitenansicht |
Wird derzeit immer gespeichert, falls UserPreferences aktiviert |
Lupen-Position |
Wird derzeit immer gespeichert, falls UserPreferences aktiviert |
Im Folgenden werden drei Code-Beispiele gezeigt, wie die Benutzereinstellungen gespeichert und wieder geladen werden können.
Methode die beim Beenden des Viewers die Einstellungen speichert, sie muss im Exit-Hook des Viewers aufgerufen werden:
public static void closeViewer(JCibView viewer) {
if (viewer == null)
return;
// store last frame position and size
UserPreferences userPrefs = viewer.getUserPreferences();
Boolean saveFramePos = (Boolean) viewer.getProperty(
ICibApplication.PROPERTY_RESTORE_WINDOW_BOUNDS_ENABLED);
if (userPrefs != null && saveFramePos != null &&
saveFramePos.booleanValue())
userPrefs.saveWindowBounds(viewer.getFrame());
// store toolbar location
if (userPrefs != null) {
String loc = viewer.getUI().getToolbarPosition();
if (loc != null)
userPrefs.saveToolbarLocation(loc);
}
// store tab pane status
if (userPrefs != null) {
boolean isOpen = viewer.getUI().isToolPanelVisible();
userPrefs.saveTabPaneStatus(isOpen);
}
// store selected tab
if (userPrefs != null) {
String selectedTab = viewer.getUI().getSelectedTab();
userPrefs.saveSelectedTab(selectedTab);
}
// close magnifier – stores implicitely last magnifier position
JCibDocumentPane pane = (JCibDocumentPane) viewer
.getOutputComponent();
if (pane != null) {
if (pane.getMagnifierController() != null &&
pane.getMagnifierController().isActive())
pane.getMagnifierController().deactivate();
}
viewer.stop();
}
Variablen und Methode zum Laden der bisherigen Einstellungen beim Starten des Viewers:
// definition of constants and variables
/** line separator */
public static final String SEPARATOR = System.getProperty("file.separator");
/** the user home directory */
public static String user_home = System.getProperty("user.home");
/** the cib specific user directory for ini and property files */
public static String cib_user_dir;
/** the user specific property file */
public static String cib_user_file;
// init the user preferences files
cib_user_dir = user_home+"Anwendungsdaten"+SEPARATOR+"cib"+SEPARATOR;
File user_dir = new File(cib_user_dir);
if (!user_dir.exists())
user_dir.mkdir();
cib_user_file = cib_user_dir+"CibJView.prefs";
public static void initializeViewer(JCibView viewer) {
// init user preferences and set the user preferences file
viewer.setProperty(ICibApplication.PROPERTY_USER_PREFERENCES_FILE,
cib_user_file);
viewer.setProperty(
ICibApplication.PROPERTY_RESTORE_WINDOW_BOUNDS_ENABLED,
Boolean.TRUE);
viewer.setProperty(
ICibApplication.PROPERTY_MAGNIFIER_ENABLED,
Boolean.TRUE);
// restore toolbar location
UserPreferences userPrefs = viewer.getUserPreferences();
int toolbarPos = SwingConstants.TOP; // default
if (userPrefs != null) {
Integer newToolbarPos = userPrefs.getToolbarLocation();
if (newToolbarPos != null)
toolbarPos = newToolbarPos.intValue();
}
viewer.setProperty(ICibApplication.PROPERTY_TOOLBAR_POSITION, new Integer(toolbarPos));
// restore tab pane status
if (userPrefs != null) {
String selectedTab = "";
Boolean isOpen = userPrefs.getIsTabpaneOpen();
if (isOpen == null || isOpen) {
isOpen = Boolean.TRUE;
selectedTab = userPrefs.getSelectedTabOnStart();
}
else {
isOpen = Boolean.FALSE;
}
// restore selected tab - if empty no tab is opened
viewer.setProperty(
ICibApplication.PROPERTY_SHOW_TAB_ON_START,
selectedTab);
}
// last magnifier position is implicitely restored when
// magnifier is opened and user preferences are active
}
Methode die beim Erzeugen des Viewer-Frames die bisherigen Einstellungen lädt:
public static JFrame createViewerFrame(final JCibView viewer) {
// get the user preferences to restore the main frame position
UserPreferences userPrefs = viewer.getUserPreferences();
Boolean restoreFramePosEnabled = (Boolean) viewer.getProperty(
ICibApplication.PROPERTY_RESTORE_WINDOW_BOUNDS_ENABLED);
// load last frame's position if configured
Rectangle t_framePos = null;
if (userPrefs != null && restoreFramePosEnabled != null &&
restoreFramePosEnabled.booleanValue())
t_framePos = userPrefs.getFrameBounds();
if (t_framePos == null) {
// Set position/size to 0,0 and 75% of screen width/height.
Dimension screenSize = Toolkit.getDefaultToolkit()
.getScreenSize();
t_framePos = new Rectangle(0, 0,
(int) (screenSize.getWidth() * 0.75),
(int) (screenSize.getHeight() * 0.75));
}
// We need a frame to put the Viewer inside.
GraphicsConfiguration gc = GraphicsUtilities
.getGraphicsConfiguration(t_framePos);
// create the frame on screen according to the frame's last position
final JFrame t_frame = new JFrame(gc);
// restore the frame's last position
t_frame.setLocation(t_framePos.x, t_framePos.y);
t_frame.setSize(t_framePos.width, t_framePos.height);
viewer.setFrame(t_frame);
return t_frame;
}
- Erzeugen einer Instanz von jCibView -> cibJView = new JCibView();
- initializeViewer(cibJView);
- createViewerFrame(cibJView);
- cibJView.start();
- cibJView.load();
Code-Beispiel:
import javax.swing.JFrame;
import de.cib.gui.framework.ICibApplication;
import de.cib.view.*;
import com.cib.comod.jobs.*;
public class JViewTest {
public static void main(java.lang.String[] args) {
JCibView cibJView = new JCibView();
cibJView.setProperty(ICibApplication.PROPERTY_INPUTFILE, "test.pdf");
initializeViewer(cibJView);
JFrame myFrame = createViewerFrame(cibJView);
myFrame.setTitle("JView Test");
cibJView.start();
cibJView.load();
myFrame.getContentPane().add(cibJView);
myFrame.setVisible(true);
}
}