summaryrefslogtreecommitdiff
path: root/BKUCommonGUI
diff options
context:
space:
mode:
authorclemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2009-11-05 19:05:14 +0000
committerclemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2009-11-05 19:05:14 +0000
commit83e8c95ea7d257166d350a59bfd81e9833ec14fd (patch)
tree1d989268e21e0ea2de24be718f40e5e86df74bbd /BKUCommonGUI
parent9f66f6cc09fd4d010b270d8a83b204728b9336e1 (diff)
downloadmocca-83e8c95ea7d257166d350a59bfd81e9833ec14fd.tar.gz
mocca-83e8c95ea7d257166d350a59bfd81e9833ec14fd.tar.bz2
mocca-83e8c95ea7d257166d350a59bfd81e9833ec14fd.zip
[#484] European Language support
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@535 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'BKUCommonGUI')
-rw-r--r--BKUCommonGUI/pom.xml18
-rw-r--r--BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java27
-rw-r--r--BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUIcons.java57
-rw-r--r--BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SecureViewerDialog.java98
-rw-r--r--BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProvider.java40
-rw-r--r--BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProviderException.java29
-rw-r--r--BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages.properties2
-rw-r--r--BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages_en.properties2
-rw-r--r--BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.pngbin0 -> 7775 bytes
-rw-r--r--BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.pngbin0 -> 787 bytes
-rw-r--r--BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.pngbin0 -> 1227 bytes
-rw-r--r--BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.pngbin0 -> 2771 bytes
-rw-r--r--BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUITest.java2
-rw-r--r--BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java35
-rw-r--r--BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/SecureViewerDialogTest.java165
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.png
new file mode 100644
index 00000000..c36d8079
--- /dev/null
+++ b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.png
Binary files differ
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.png
new file mode 100644
index 00000000..96b580e9
--- /dev/null
+++ b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.png
Binary files differ
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.png
new file mode 100644
index 00000000..efd6dbeb
--- /dev/null
+++ b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.png
Binary files differ
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.png
new file mode 100644
index 00000000..491fbcac
--- /dev/null
+++ b/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.png
Binary files differ
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