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;
}

 

  1. Erzeugen einer Instanz von jCibView -> cibJView = new JCibView();
  2. initializeViewer(cibJView);
  3. createViewerFrame(cibJView);
  4. cibJView.start();
  5. 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);
      }
}