diff --git a/html/src/linoleum/html/Browser.form b/html/src/linoleum/html/Browser.form index 0dd78244..9c8a0dfd 100644 --- a/html/src/linoleum/html/Browser.form +++ b/html/src/linoleum/html/Browser.form @@ -19,16 +19,18 @@ + - + + @@ -47,6 +49,11 @@ + + + + + @@ -75,6 +82,13 @@ + + + + + + + diff --git a/html/src/linoleum/html/Browser.java b/html/src/linoleum/html/Browser.java index b525f04f..fe23ba7b 100644 --- a/html/src/linoleum/html/Browser.java +++ b/html/src/linoleum/html/Browser.java @@ -52,8 +52,8 @@ public class Browser extends FileSupport { @Override public void preferenceChange(final PreferenceChangeEvent evt) { - if (evt.getKey().equals(getKey("fontSize"))) { - resize(); + if (evt.getKey().equals(getKey("fontSize")) || evt.getKey().equals(getKey("userAgent"))) { + reconf(); } } @@ -75,7 +75,7 @@ public Browser() { setIcon(new ImageIcon(getClass().getResource("/toolbarButtonGraphics/development/WebComponent24.gif"))); setMimeType("text/html"); setScheme("http:https"); - resize(); + reconf(); jEditorPane1.setDefaultEditorKit(new DefaultEditorKit() { @Override public void read(final Reader r, final Document doc, final int pos) { @@ -141,6 +141,7 @@ private void open(final String str) { public void load() { jTextField2.setText(getHome()); jComboBox1.setSelectedItem(getFontSize()); + jTextField3.setText(getUserAgent()); } private String getHome() { @@ -151,14 +152,20 @@ private int getFontSize() { return prefs.getInt(getKey("fontSize"), jEditorPane1.getFont().getSize()); } - private void resize() { + private String getUserAgent() { + return prefs.get(getKey("userAgent"), ""); + } + + private void reconf() { jEditorPane1.setFont(jEditorPane1.getFont().deriveFont((float) getFontSize())); + jEditorPane1.setUserAgent(getUserAgent()); } @Override public void save() { prefs.put(getKey("home"), jTextField2.getText()); prefs.putInt(getKey("fontSize"), (Integer) jComboBox1.getSelectedItem()); + prefs.put(getKey("userAgent"), jTextField3.getText()); } @Override @@ -344,6 +351,8 @@ private void initComponents() { jTextField2 = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jComboBox1 = new javax.swing.JComboBox(); + jLabel4 = new javax.swing.JLabel(); + jTextField3 = new javax.swing.JTextField(); jPanel3 = new javax.swing.JPanel(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); @@ -376,6 +385,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); + jLabel4.setText("User agent:"); + javax.swing.GroupLayout optionPanel1Layout = new javax.swing.GroupLayout(optionPanel1); optionPanel1.setLayout(optionPanel1Layout); optionPanel1Layout.setHorizontalGroup( @@ -383,14 +394,16 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addGroup(optionPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(optionPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel4) .addComponent(jLabel3) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(optionPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 283, Short.MAX_VALUE) + .addComponent(jTextField2) .addGroup(optionPanel1Layout.createSequentialGroup() .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE))) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(jTextField3)) .addContainerGap()) ); optionPanel1Layout.setVerticalGroup( @@ -404,6 +417,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addGroup(optionPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(optionPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel4) + .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); @@ -474,7 +491,7 @@ public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 394, Short.MAX_VALUE) + .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -554,6 +571,7 @@ private void jPopupMenu1PopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEv private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPopupMenu jPopupMenu1; @@ -561,6 +579,7 @@ private void jPopupMenu1PopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEv private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; + private javax.swing.JTextField jTextField3; private linoleum.application.OptionPanel optionPanel1; // End of variables declaration//GEN-END:variables } diff --git a/html/src/linoleum/html/EditorPane.java b/html/src/linoleum/html/EditorPane.java index f119c8ac..13159dd1 100644 --- a/html/src/linoleum/html/EditorPane.java +++ b/html/src/linoleum/html/EditorPane.java @@ -36,6 +36,7 @@ public class EditorPane extends JEditorPane { private final Logger logger = Logger.getLogger(getClass().getName()); private PageLoader loader; private EditorKit kit; + private String agent; void setLoader(final PageLoader loader) { this.loader = loader; @@ -45,6 +46,10 @@ void setDefaultEditorKit(final EditorKit kit) { this.kit = kit; } + void setUserAgent(final String agent) { + this.agent = agent; + } + @Override protected EditorKit createDefaultEditorKit() { return kit == null?super.createDefaultEditorKit():kit; @@ -160,6 +165,9 @@ private InputStream getStream(final URL page, final String auth) throws IOExcept } conn.addRequestProperty("Authorization", map.get(host)); } + if (agent != null && !agent.isEmpty()) { + conn.addRequestProperty("User-Agent", agent); + } if (conn instanceof HttpURLConnection) { final HttpURLConnection hconn = (HttpURLConnection) conn; hconn.setInstanceFollowRedirects(false);