diff options
Diffstat (limited to 'BKUCommonGUI')
15 files changed, 413 insertions, 62 deletions
| diff --git a/BKUCommonGUI/pom.xml b/BKUCommonGUI/pom.xml index 9fecb661..feefa18b 100644 --- a/BKUCommonGUI/pom.xml +++ b/BKUCommonGUI/pom.xml @@ -21,6 +21,13 @@              <version>1.2.8-SNAPSHOT</version>              <scope>compile</scope>          </dependency> +        <!-- see BKUFonts.pom +        <dependency> +          <groupId>at.gv.egiz</groupId> +          <artifactId>BKUFonts</artifactId> +          <version>1.0</version> +          <scope>runtime</scope> +        </dependency-->      </dependencies>  	  <build>  	    <plugins> @@ -33,15 +40,4 @@  	      </plugin>  	    </plugins>  	  </build> -    <!--build> -        <plugins> -            <plugin> -                <groupId>org.apache.maven.plugins</groupId> -                <artifactId>maven-surefire-plugin</artifactId> -                <configuration> -                    <skip>true</skip> -                </configuration> -            </plugin> -        </plugins> -    </build-->  </project>
\ No newline at end of file diff --git a/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java b/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java index e83502a8..8df4bd72 100644 --- a/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java +++ b/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java @@ -17,6 +17,8 @@  package at.gv.egiz.bku.gui; +import at.gv.egiz.bku.gui.viewer.FontProviderException; +import at.gv.egiz.bku.gui.viewer.FontProvider;  import at.gv.egiz.smcc.PINSpec;  import at.gv.egiz.stal.HashDataInput;  import java.awt.Color; @@ -73,6 +75,7 @@ public class BKUGUIImpl implements BKUGUIFacade {      protected HelpKeyListener helpKeyListener;      protected SwitchFocusFocusListener switchFocusKeyListener;      protected SecureViewerDialog secureViewer; +    protected FontProvider fontProvider;      protected Container contentPane;      protected ResourceBundle messages; @@ -115,8 +118,9 @@ public class BKUGUIImpl implements BKUGUIFacade {       */      public BKUGUIImpl(Container contentPane,               Locale locale,  -            Style guiStyle,  +            Style guiStyle,              URL background,  +            FontProvider fontProvider,              ActionListener helpListener,              SwitchFocusListener switchFocusListener) {        this.contentPane = contentPane; @@ -139,7 +143,8 @@ public class BKUGUIImpl implements BKUGUIFacade {        registerHelpListener(helpListener);        registerSwitchFocusListener(switchFocusListener); -       + +      this.fontProvider = fontProvider;        createGUI(background);      } @@ -1386,7 +1391,12 @@ public class BKUGUIImpl implements BKUGUIFacade {              @Override              public void run() { -              showSecureViewer(dataToBeSigned.get(0));  +              try { +                showSecureViewer(dataToBeSigned.get(0)); +              } catch (FontProviderException ex) { +                log.error("failed to display secure viewer", ex); +                showErrorDialog(ERR_VIEWER, new Object[] {ex.getMessage()}, backListener, backCommand); +              }              }            }); @@ -1407,12 +1417,12 @@ public class BKUGUIImpl implements BKUGUIFacade {       * @param saveListener       * @param saveCommand       */ -    private void showSecureViewer(HashDataInput dataToBeSigned) { +    private void showSecureViewer(HashDataInput dataToBeSigned) throws FontProviderException {        log.debug("show secure viewer [" + Thread.currentThread().getName() + "]");        if (secureViewer == null) {          secureViewer = new SecureViewerDialog(null, messages, -                helpMouseListener.getActionListener()); +                fontProvider, helpMouseListener.getActionListener());          // workaround for [#439]          // avoid AlwaysOnTop at least in applet, otherwise make secureViewer AlwaysOnTop since MOCCA Dialog (JFrame created in LocalSTALFactory) is always on top. @@ -1485,7 +1495,12 @@ public class BKUGUIImpl implements BKUGUIFacade {                    int selectionIdx = lsm.getMinSelectionIndex();                    if (selectionIdx >= 0) {                      final HashDataInput selection = signedReferences.get(selectionIdx); -                    showSecureViewer(selection); +                    try { +                      showSecureViewer(selection); +                    } catch (FontProviderException ex) { +                      log.error("failed to display secure viewer", ex); +                      showErrorDialog(ERR_VIEWER, new Object[] {ex.getMessage()}, backListener, backCommand); +                    }                    }                  }                }); diff --git a/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUIcons.java b/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUIcons.java new file mode 100644 index 00000000..92d6897b --- /dev/null +++ b/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUIcons.java @@ -0,0 +1,57 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + *  + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *  + *     http://www.apache.org/licenses/LICENSE-2.0 + *  + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package at.gv.egiz.bku.gui; + +import java.awt.Image; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import javax.imageio.ImageIO; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at> + */ +public class BKUIcons { + +  protected static final Log log = LogFactory.getLog(BKUIcons.class); + +  /** 16x16, 24x24, 32x32, 48x48, 128x128 pixels */ +  public static final ArrayList<Image> icons = new ArrayList<Image>(); + +  static { +    String[] iconResources = new String[] { +      "/at/gv/egiz/bku/gui/chip16.png", +      "/at/gv/egiz/bku/gui/chip24.png", +      "/at/gv/egiz/bku/gui/chip32.png", +      "/at/gv/egiz/bku/gui/chip48.png", +      "/at/gv/egiz/bku/gui/chip128.png" }; +    for (String ir : iconResources) { +      URL resource = BKUIcons.class.getResource(ir); +      if (ir != null) { +        try { +          icons.add(ImageIO.read(resource)); +        } catch (IOException ex) { +          log.warn("failed to load mocca icon " + ir, ex); +        } +      } +    } +  } +} diff --git a/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SecureViewerDialog.java b/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SecureViewerDialog.java index ef70f94b..1883fce5 100644 --- a/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SecureViewerDialog.java +++ b/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SecureViewerDialog.java @@ -16,6 +16,7 @@   */  package at.gv.egiz.bku.gui; +import at.gv.egiz.bku.gui.viewer.FontProvider;  import at.gv.egiz.stal.HashDataInput;  import java.awt.Container;  import java.awt.Cursor; @@ -53,9 +54,12 @@ import javax.swing.JPanel;  import javax.swing.JScrollPane;  import javax.swing.LayoutStyle;  import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.text.DefaultEditorKit;  import javax.swing.text.Document;  import javax.swing.text.EditorKit;  import javax.swing.text.StyledEditorKit; +import javax.swing.text.html.HTMLEditorKit;  import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory; @@ -65,16 +69,20 @@ import org.apache.commons.logging.LogFactory;   */  public class SecureViewerDialog extends JDialog implements ActionListener { -  public static final String PLAINTEXT_FONT = "Monospaced"; +  /** don't import BKUFonts in order not to load BKUFonts.jar +   * BKUApplet includes BKUFonts as runtime dependency only, the jar is copied to the applet dir in BKUOnline with dependency-plugin +   * BKUViewer has compile dependency BKUFonts, transitive in BKUOnline and BKULocal +   */ +  public static final String PLAINTEXT_FONT_RESOURCE = "DejaVuSansMono.ttf";    public static final Dimension VIEWER_DIMENSION = new Dimension(600, 400);    protected static final Log log = LogFactory.getLog(SecureViewerDialog.class); -  //  private static SecureViewerDialog dialog;    protected ResourceBundle messages;    protected JEditorPane viewer;    protected JLabel viewerLabel;    protected JScrollPane scrollPane;    protected HashDataInput content; //remember for save dialog +  protected FontProvider fontProvider;    /**     * Create and display a modal SecureViewer dialog. @@ -97,10 +105,12 @@ public class SecureViewerDialog extends JDialog implements ActionListener {  //    dialog.setVisible(true);  //  }    public SecureViewerDialog(Frame owner, ResourceBundle messages, -//          ActionListener saveListener, String saveCommand, -          ActionListener helpListener) { +          //          ActionListener saveListener, String saveCommand, +          FontProvider fontProvider, ActionListener helpListener) {      super(owner, messages.getString(BKUGUIFacade.WINDOWTITLE_VIEWER), true); +    this.setIconImages(BKUIcons.icons);      this.messages = messages; +    this.fontProvider = fontProvider;      initContentPane(VIEWER_DIMENSION,              createViewerPanel(helpListener), @@ -135,7 +145,8 @@ public class SecureViewerDialog extends JDialog implements ActionListener {    private JPanel createViewerPanel(final ActionListener helpListener) {      viewer = new JEditorPane();      viewer.setEditable(false); - +    viewer.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE); +          scrollPane = new JScrollPane();      JPanel viewerPanel = new JPanel(); @@ -167,31 +178,29 @@ public class SecureViewerDialog extends JDialog implements ActionListener {        });        helpLabel.addKeyListener(new KeyAdapter() { -          @Override -          public void keyPressed(KeyEvent arg0) { -        	   -        	  if(arg0.getKeyCode() == KeyEvent.VK_ENTER) { -	            ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, BKUGUIFacade.HELP_HASHDATAVIEWER); -	            helpListener.actionPerformed(e); -        	  } +        @Override +        public void keyPressed(KeyEvent arg0) { + +          if (arg0.getKeyCode() == KeyEvent.VK_ENTER) { +            ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, BKUGUIFacade.HELP_HASHDATAVIEWER); +            helpListener.actionPerformed(e);            } -        });       -       +        } +      }); +        helpLabel.addFocusListener(new FocusAdapter() { -     	  -    	  @Override -    	  public void focusGained(FocusEvent e) { -    		     		  -    		  helpLabel.setIcon(new ImageIcon(getClass().getResource(BKUGUIFacade.HELP_IMG_FOCUS))); -    	  } -    	   -    	  @Override -    	  public void focusLost(FocusEvent e) { -    		  -    		  helpLabel.setIcon(new ImageIcon(getClass().getResource(BKUGUIFacade.HELP_IMG))); -    	  } -    	   -    	   + +        @Override +        public void focusGained(FocusEvent e) { + +          helpLabel.setIcon(new ImageIcon(getClass().getResource(BKUGUIFacade.HELP_IMG_FOCUS))); +        } + +        @Override +        public void focusLost(FocusEvent e) { + +          helpLabel.setIcon(new ImageIcon(getClass().getResource(BKUGUIFacade.HELP_IMG))); +        }        });        helpLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); @@ -216,9 +225,10 @@ public class SecureViewerDialog extends JDialog implements ActionListener {     * @param hashDataInput     */ -  public void setContent(HashDataInput hashDataInput) { +  public void setContent(HashDataInput hashDataInput) { //throws FontProviderException {      this.content = null; +    viewer.setText(null);      String mimeType = hashDataInput.getMimeType();      if (mimeType == null) { @@ -228,20 +238,21 @@ public class SecureViewerDialog extends JDialog implements ActionListener {      // loads editorkit for text/plain if unrecognized      viewer.setContentType(mimeType); -    if ("text/plain".equals(mimeType)) { -      viewer.setEditorKit(new StyledEditorKit()); -      viewer.setFont(new Font(PLAINTEXT_FONT, viewer.getFont().getStyle(), viewer.getFont().getSize())); -//    } else if ("text/html".equals(mimeType)) { -//      viewer.setEditorKit(new RestrictedHTMLEditorKit()); -    } else if ("application/xhtml+xml".equals(mimeType)) { -      viewer.setContentType("text/html"); -    } +    try { +       +      if ("text/plain".equals(mimeType)) { +        viewer.setEditorKit(new StyledEditorKit()); +        viewer.setFont(fontProvider.getFont().deriveFont(Font.PLAIN, viewer.getFont().getSize())); +      } else if ("application/xhtml+xml".equals(mimeType)) { +        viewer.setEditorKit(new HTMLEditorKit()); +        //reset font if fontprovider font was set before (TODO also html font from fontprovider) +        viewer.setFont(new Font("Dialog", Font.PLAIN, viewer.getFont().getSize())); //UIManager.getFont("Label.font")); +      } -    EditorKit editorKit = viewer.getEditorKit(); -    Document document = editorKit.createDefaultDocument(); -//    document.putProperty("IgnoreCharsetDirective", new Boolean(true)); +      EditorKit editorKit = viewer.getEditorKit(); +      Document document = editorKit.createDefaultDocument(); +  //    document.putProperty("IgnoreCharsetDirective", new Boolean(true)); -    try {        Charset cs = (hashDataInput.getEncoding() == null) ? Charset.forName("UTF-8") : Charset.forName(hashDataInput.getEncoding());        log.debug("secure viewer encoding: " + cs.toString()); @@ -252,11 +263,14 @@ public class SecureViewerDialog extends JDialog implements ActionListener {        this.content = hashDataInput; +//    } catch (Exception ex) // fontProvider  //    } catch (IllegalCharsetNameException ex) {  //    } catch (UnsupportedCharsetException ex) { +//    } catch (FontProviderException ex) {      } catch (Exception ex) {        log.error(ex.getMessage(), ex);        String p = messages.getString(BKUGUIFacade.ERR_VIEWER); +      viewer.setContentType("text/plain");        viewer.setText(MessageFormat.format(p, ex.getMessage()));      }      viewer.setCaretPosition(0); @@ -280,7 +294,7 @@ public class SecureViewerDialog extends JDialog implements ActionListener {      closeButton.setText(messages.getString(BKUGUIFacade.BUTTON_CLOSE));      closeButton.setActionCommand("close");      closeButton.addActionListener(this); -     +      JButton saveButton = new JButton();      saveButton.setText(messages.getString(BKUGUIFacade.BUTTON_SAVE));      saveButton.setActionCommand("save"); diff --git a/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProvider.java b/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProvider.java new file mode 100644 index 00000000..8fb815b0 --- /dev/null +++ b/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProvider.java @@ -0,0 +1,40 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + *  + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *  + *     http://www.apache.org/licenses/LICENSE-2.0 + *  + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package at.gv.egiz.bku.gui.viewer; + +import java.awt.Font; + +/** + * + * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at> + */ +public interface FontProvider { + +  /** will be replaced by more sophisticated font selection mechanism +   * (see java.awt.Font int/String constants) */ +  String SANSMONO_FONT_RESOURCE = "DejaVuLGCSansMono.ttf"; + +  /** +   * +   * @return +   * @throws InterruptedException +   * @throws FileNotFoundException if remote font file cannot be retrieved +   */ +  Font getFont() throws FontProviderException; + +} diff --git a/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProviderException.java b/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProviderException.java new file mode 100644 index 00000000..5a6a277e --- /dev/null +++ b/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProviderException.java @@ -0,0 +1,29 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + *  + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *  + *     http://www.apache.org/licenses/LICENSE-2.0 + *  + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package at.gv.egiz.bku.gui.viewer; + +/** + * Encapsulates the reason why a font could not be loaded. + * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at> + */ +public class FontProviderException extends Exception { + +  public FontProviderException(String msg, Throwable cause) { +    super(msg, cause); +  } +} diff --git a/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages.properties b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages.properties index a96b835f..b458a214 100644 --- a/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages.properties +++ b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages.properties @@ -86,7 +86,7 @@ error.test=<html>Fehler1 {0} - Fehler2 {1}</html>  error.card.locked=<html>B\u00FCrgerkarte ist gesperrt</html>  error.card.notactivated=<html>Die B\u00FCrgerkarte ist nicht aktiviert</html>  error.pin.timeout=<html>Zeit\u00FCberschreitung bei Eingabe der PIN</html> -error.viewer=Der Inhalt kann nicht dargestellt werden: {0} +error.viewer=<html>Der Inhalt kann nicht dargestellt werden: {0}  error.external.link=<html>Externer Link {0} wird nicht ge\u00F6ffnet</html>  error.config=<html>Fehlerhafte Konfiguration des Systems: {0}</html> diff --git a/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages_en.properties b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages_en.properties index c795b3fa..22b9095c 100644 --- a/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages_en.properties +++ b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages_en.properties @@ -84,7 +84,7 @@ error.test=<html>Error1 {0} - Error2 {1}</html>  error.card.locked=<html>Citizen card is locked</html>  error.card.notactivated=<html>Citizen card not activated</html>  error.pin.timeout=<html>Timeout during PIN entry</html> -error.viewer=Failed to display contents: {0} +error.viewer=<html>Failed to display contents: {0}  error.external.link=<html>Cannot open external link {0}</html>  error.config=<html>Incorrect system configuration: {0}</html> diff --git a/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.png b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.pngBinary files differ new file mode 100644 index 00000000..c36d8079 --- /dev/null +++ b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.png diff --git a/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.png b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.pngBinary files differ new file mode 100644 index 00000000..96b580e9 --- /dev/null +++ b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.png diff --git a/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.png b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.pngBinary files differ new file mode 100644 index 00000000..efd6dbeb --- /dev/null +++ b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.png diff --git a/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.png b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.pngBinary files differ new file mode 100644 index 00000000..491fbcac --- /dev/null +++ b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.png diff --git a/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUITest.java b/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUITest.java index 9f1cb612..fdd58850 100644 --- a/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUITest.java +++ b/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUITest.java @@ -41,7 +41,7 @@ public class BKUGUITest {          Container contentPane = testFrame.getContentPane();  //        contentPane.setPreferredSize(new Dimension(170, 150));          contentPane.setPreferredSize(new Dimension(290, 190)); -        BKUGUIFacade gui = new BKUGUIImpl(contentPane, null, BKUGUIFacade.Style.advanced, null, null, null); +        BKUGUIFacade gui = new BKUGUIImpl(contentPane, null, BKUGUIFacade.Style.advanced, null, new DummyFontLoader(), null, null);          BKUGUIWorker worker = new BKUGUIWorker();          worker.init(gui);          testFrame.pack(); diff --git a/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java b/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java new file mode 100644 index 00000000..87d67adc --- /dev/null +++ b/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java @@ -0,0 +1,35 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + *  + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *  + *     http://www.apache.org/licenses/LICENSE-2.0 + *  + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.viewer.FontProviderException; +import at.gv.egiz.bku.gui.viewer.FontProvider; +import java.awt.Font; + +/** + * + * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at> + */ +public class DummyFontLoader implements FontProvider { + +  @Override +  public Font getFont() throws FontProviderException { +    return new Font("monospaced", Font.PLAIN, 10); +  } + +} diff --git a/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/SecureViewerDialogTest.java b/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/SecureViewerDialogTest.java new file mode 100644 index 00000000..fc8dcd96 --- /dev/null +++ b/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/SecureViewerDialogTest.java @@ -0,0 +1,165 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package at.gv.egiz.bku.gui; + +import at.gv.egiz.stal.impl.ByteArrayHashDataInput; +import java.awt.Font; +import java.io.BufferedInputStream; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.ResourceBundle; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * + * @author clemens + */ +@Ignore +public class SecureViewerDialogTest { + +  static SecureViewerDialog secureViewer; +  static ResourceBundle messages; + +  @BeforeClass +  public static void setUpClass() throws Exception { +    messages = ResourceBundle.getBundle("at/gv/egiz/bku/gui/Messages"); +    secureViewer = new SecureViewerDialog(null, messages, new DummyFontLoader(), null); +  } + +  @AfterClass +  public static void tearDownClass() throws Exception { +  } + +    @Before +    public void setUp() { +    } + +    @After +    public void tearDown() { +    } + + +    @Test +    @Ignore +    public void testLatin1Supplement() throws UnsupportedEncodingException, FileNotFoundException, IOException { +//      StringBuilder data = new StringBuilder(); +//      data.append("\nhttp://www.unicode.org/charts/PDF/U0080.pdf\n"); +//      for (int i = 0x0080; i <= 0x00ff; i++) { +//        data.append((char) i); +//      } +//      System.out.println(data.toString()); +      BufferedInputStream bis = new BufferedInputStream(new FileInputStream("/home/clemens/IAIK/MOCCA/encoding/test_iso-8859-1.txt")); +      byte[] bytes = new byte[bis.available()]; +      bis.read(bytes); +      String s = new String(bytes, "iso-8859-1"); +      System.out.println("read iso-8859-1 bytes " + s); + +      secureViewer.setContent(new ByteArrayHashDataInput(s.getBytes("UTF-8"), "id-1", "text/plain", "iso-8859-1")); + +    } + +    @Test +    @Ignore +    public void testGreek() throws UnsupportedEncodingException { +//      Font fm = new Font(Font.MONOSPACED, Font.PLAIN, 10); +      Font fm = new Font("Lucida Sans Typewriter", Font.PLAIN, 18); //GothicBBB-MediumH", Font.PLAIN, 10); +      System.out.println(fm.getFontName() + ", " + fm.getPSName() + ", " + fm); + +      StringBuilder data = new StringBuilder(); +      data.append("\nhttp://www.unicode.org/charts/PDF/U0370.pdf\n"); +      for (int i = 0x0370; i <= 0x03ff; i++) { +        if (!fm.canDisplay((char) i)) { +          System.out.println("cannot display " + Integer.toHexString(i) ); +        } +        data.append((char) i); +      } + +      System.out.println(data.toString()); +      secureViewer.setContent(new ByteArrayHashDataInput(data.toString().getBytes("UTF-8"), "id-1", "text/plain", "UTF-8")); + +    } + +  /** +   * Test of setContent method, of class SecureViewerDialog. +   */ +  @Test +//  @Ignore +  public void testCyrillic() throws UnsupportedEncodingException { + +    StringBuilder data = new StringBuilder("\n"); +     +    int[] mocca = new int[] {0x041c, 0x04a8, 0x0480, 0x0480, 0x0466 }; +     +    for (int i = 0; i < mocca.length; i++) { +      data.append((char) mocca[i]); +    } +    data.append(" goes cyrillic\n"); + +    data.append("\nCyrillic - http://www.unicode.org/charts/PDF/U0400.pdf\n"); +    for (int i = 0x0400; i <= 0x04ff; i++) { +//      System.out.printf("%c%04x=%c\t", (i & 7) == 0 ? '\n' : '\0', i, (char)i); +//      System.out.print((char) i); +      data.append((char)i); +    } + +    data.append("\n\nCyrillic Supplement - http://www.unicode.org/charts/PDF/U0500.pdf\n"); +    for (int i = 0x0500; i <= 0x0525; i++) { +//      System.out.printf("%c%04x=%c\t", (i & 7) == 0 ? '\n' : '\0', i, (char)i); +//      System.out.print((char) i); +      data.append((char) i); +    } + +    for (int i = 0; i < data.length(); i++) { +      char c = data.charAt(i); +      if (c >= '\u0400' && c <= '\u0525') { +        System.out.println(c + "\tcyrillic"); +      } else if (c < '\u007f') { +        System.out.println(c + "\tlatin"); +      } else { +        System.out.println(c + "\tunknown"); +      } +    } + +    System.out.println(data.toString()); + +//    char[] cyrillicChars = new char[] {(char) 0x0411, (char) 0x0444}; +//    System.out.println(new String(cyrillicChars)); // + ": " + SMCCHelper.toString(cyrillicBytes)); +//    byte[] cyrillicBytes = new byte[] {(byte) 0x11, (byte) 0x04, (byte) 0x0444}; +//    System.out.println(new String(cyrillicBytes, "UTF-8") + ": " + SMCCHelper.toString(cyrillicBytes)); + +//    String encoding = "cp1252"; +//    String data = "öäü߀"; +//    byte[] bytes = data.getBytes(encoding); +//    System.out.println(data + "\t" +  SMCCHelper.toString(bytes)); +//    byte[] bytes2 = data.getBytes("cp1252"); +//    System.out.println(data + "\t" +  SMCCHelper.toString(bytes2)); + +    secureViewer.setContent(new ByteArrayHashDataInput(data.toString().getBytes("UTF-8"), "id-1", "text/plain", "UTF-8")); + +    System.out.println("\n\n=============================\n"); +// +////    int[] mocca = new int[] {0x0428, 0x0429, 0x04a8, 0x04e8, 0x047a, 0x042d, 0x042d, 0x0421, 0x0421, 0x04d0, 0x0466 }; +//    int[] mocca = new int[] {0x0429, 0x04a8, 0x0480, 0x0480, 0x0466 }; +    for (int i = 0; i < mocca.length; i++) { +      System.out.print((char) mocca[i]); +    } +//    for (int i = 0; i < mocca.length; i++) { +//      System.out.printf(" 0x%04x", mocca[i]); +//    } +// +    System.out.println("\n=============================\n"); + +  } + +   +}
\ No newline at end of file | 
