- update welcome screen with correct paths and some improvements

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9968 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
nor..67 12 years ago
parent b4cf745189
commit 5d3661cae0
  1. 4
      sdk/jme3-welcome-screen/src/com/jme3/gde/welcome/Bundle.properties
  2. 50
      sdk/jme3-welcome-screen/src/com/jme3/gde/welcome/WelcomeScreenTopComponent.form
  3. 65
      sdk/jme3-welcome-screen/src/com/jme3/gde/welcome/WelcomeScreenTopComponent.java
  4. 27
      sdk/jme3-welcome-screen/src/com/jme3/gde/welcome/rss/RssFeedParser.java

@ -3,7 +3,7 @@ OpenIDE-Module-Long-Description=\
The jMonkeyEngine GDE Welcome Screen The jMonkeyEngine GDE Welcome Screen
OpenIDE-Module-Name=Welcome Screen OpenIDE-Module-Name=Welcome Screen
OpenIDE-Module-Short-Description=The jMonkeyEngine GDE Welcome Screen OpenIDE-Module-Short-Description=The jMonkeyEngine GDE Welcome Screen
WelcomeScreenTopComponent.jTextPane1.border.title=Latest jMonkeyEngine News
WelcomeScreenTopComponent.http.link=http://jmonkeyengine.org/wiki/doku.php/sdk:welcome:3_0rc3?do=export_xhtmlbody WelcomeScreenTopComponent.http.link=http://jmonkeyengine.org/wiki/doku.php/sdk:welcome:3_0rc3?do=export_xhtmlbody
WelcomeScreenTopComponent.rss.link=http://jmonkeyengine.org/feed/rdf/ WelcomeScreenTopComponent.rss.link=http://jmonkeyengine.org/feed/rdf/
WelcomeScreenTopComponent.local.link=nbres:/com/jme3/gde/core/docs/core-about.html WelcomeScreenTopComponent.local.link=nbres:/com/jme3/gde/core/docs/sdk/welcome/3_0rc3.html
WelcomeScreenTopComponent.jLabel1.text=Latest News

@ -46,20 +46,27 @@
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0"> <Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane2" max="32767" attributes="0"/> <Component id="jScrollPane2" pref="255" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane3" min="-2" pref="230" max="-2" attributes="0"/> <Group type="103" groupAlignment="0" max="-2" attributes="0">
<Component id="jScrollPane3" pref="230" max="32767" attributes="0"/>
<Component id="jLabel1" max="32767" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
</Group> </Group>
</Group> </Group>
</DimensionLayout> </DimensionLayout>
<DimensionLayout dim="1"> <DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0"> <Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="jLabel1" min="-2" pref="17" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane3" pref="409" max="32767" attributes="0"/>
</Group>
<Component id="jScrollPane2" max="32767" attributes="0"/> <Component id="jScrollPane2" max="32767" attributes="0"/>
<Component id="jScrollPane3" pref="436" max="32767" attributes="0"/>
</Group> </Group>
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
</Group> </Group>
@ -70,7 +77,9 @@
<Container class="javax.swing.JScrollPane" name="jScrollPane3"> <Container class="javax.swing.JScrollPane" name="jScrollPane3">
<Properties> <Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/> <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
<EmptyBorder/>
</Border>
</Property> </Property>
<Property name="opaque" type="boolean" value="false"/> <Property name="opaque" type="boolean" value="false"/>
</Properties> </Properties>
@ -84,13 +93,9 @@
<Properties> <Properties>
<Property name="editable" type="boolean" value="false"/> <Property name="editable" type="boolean" value="false"/>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo"> <Border info="null"/>
<TitledBorder title="Latest jMonkeyEngine News">
<ResourceString PropertyName="titleX" bundle="com/jme3/gde/welcome/Bundle.properties" key="WelcomeScreenTopComponent.jTextPane1.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
<Font PropertyName="font" name="Lucida Grande" size="13" style="1"/>
</TitledBorder>
</Border>
</Property> </Property>
<Property name="contentType" type="java.lang.String" value="text/html" noResource="true"/>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="Lucida Grande" size="12" style="2"/> <Font name="Lucida Grande" size="12" style="2"/>
</Property> </Property>
@ -110,6 +115,11 @@
</Container> </Container>
<Container class="javax.swing.JScrollPane" name="jScrollPane2"> <Container class="javax.swing.JScrollPane" name="jScrollPane2">
<Properties> <Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
<EmptyBorder/>
</Border>
</Property>
<Property name="opaque" type="boolean" value="false"/> <Property name="opaque" type="boolean" value="false"/>
</Properties> </Properties>
<AuxValues> <AuxValues>
@ -121,6 +131,12 @@
<Component class="javax.swing.JEditorPane" name="jEditorPane1"> <Component class="javax.swing.JEditorPane" name="jEditorPane1">
<Properties> <Properties>
<Property name="editable" type="boolean" value="false"/> <Property name="editable" type="boolean" value="false"/>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
<EmptyBorder/>
</Border>
</Property>
<Property name="contentType" type="java.lang.String" value="text/html" noResource="true"/>
<Property name="caretColor" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> <Property name="caretColor" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="ff" green="ff" red="ff" type="rgb"/> <Color blue="ff" green="ff" red="ff" type="rgb"/>
</Property> </Property>
@ -129,6 +145,16 @@
</Component> </Component>
</SubComponents> </SubComponents>
</Container> </Container>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="Lucida Grande" size="14" style="1"/>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/welcome/Bundle.properties" key="WelcomeScreenTopComponent.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
</SubComponents> </SubComponents>
</Container> </Container>
</SubComponents> </SubComponents>

@ -16,6 +16,7 @@ import org.openide.awt.HtmlBrowser.URLDisplayer;
import org.openide.util.Exceptions; import org.openide.util.Exceptions;
import org.openide.windows.TopComponent; import org.openide.windows.TopComponent;
import org.openide.util.NbBundle.Messages; import org.openide.util.NbBundle.Messages;
import sun.swing.SwingUtilities2;
/** /**
* Top component which displays something. * Top component which displays something.
@ -26,7 +27,7 @@ autostore = false)
@TopComponent.Description( @TopComponent.Description(
preferredID = "WelcomeScreenTopComponent", preferredID = "WelcomeScreenTopComponent",
//iconBase="SET/PATH/TO/ICON/HERE", //iconBase="SET/PATH/TO/ICON/HERE",
persistenceType = TopComponent.PERSISTENCE_ALWAYS) persistenceType = TopComponent.PERSISTENCE_NEVER)
@TopComponent.Registration(mode = "editor", openAtStartup = true) @TopComponent.Registration(mode = "editor", openAtStartup = true)
@ActionID(category = "Window", id = "com.jme3.gde.welcome.WelcomeScreenTopComponent") @ActionID(category = "Window", id = "com.jme3.gde.welcome.WelcomeScreenTopComponent")
@ActionReference(path = "Menu/Window" /*, position = 333 */) @ActionReference(path = "Menu/Window" /*, position = 333 */)
@ -34,29 +35,45 @@ persistenceType = TopComponent.PERSISTENCE_ALWAYS)
displayName = "#CTL_WelcomeScreenAction", displayName = "#CTL_WelcomeScreenAction",
preferredID = "WelcomeScreenTopComponent") preferredID = "WelcomeScreenTopComponent")
@Messages({ @Messages({
"CTL_WelcomeScreenAction=WelcomeScreen", "CTL_WelcomeScreenAction=Info Screen",
"CTL_WelcomeScreenTopComponent=WelcomeScreen Window", "CTL_WelcomeScreenTopComponent=Info Screen",
"HINT_WelcomeScreenTopComponent=This is a WelcomeScreen window" "HINT_WelcomeScreenTopComponent=Shows news and information about your SDK"
}) })
public final class WelcomeScreenTopComponent extends TopComponent implements HyperlinkListener { public final class WelcomeScreenTopComponent extends TopComponent implements HyperlinkListener {
private final RssFeedParser parser = new RssFeedParser(org.openide.util.NbBundle.getMessage(WelcomeScreenTopComponent.class, "WelcomeScreenTopComponent.rss.link"));//"http://www.chip.de/rss/rss_tests.xml"); private final RssFeedParser parser = new RssFeedParser(org.openide.util.NbBundle.getMessage(WelcomeScreenTopComponent.class, "WelcomeScreenTopComponent.rss.link"));
public WelcomeScreenTopComponent() { public WelcomeScreenTopComponent() {
initComponents(); initComponents();
setName(Bundle.CTL_WelcomeScreenTopComponent());
setToolTipText(Bundle.HINT_WelcomeScreenTopComponent());
jScrollPane2.setOpaque(false); jScrollPane2.setOpaque(false);
jScrollPane2.getViewport().setOpaque(false); jScrollPane2.getViewport().setOpaque(false);
jScrollPane3.setOpaque(false); jScrollPane3.setOpaque(false);
jScrollPane3.getViewport().setOpaque(false); jScrollPane3.getViewport().setOpaque(false);
setName(Bundle.CTL_WelcomeScreenTopComponent()); jTextPane1.putClientProperty(SwingUtilities2.AA_TEXT_PROPERTY_KEY, null);
setToolTipText(Bundle.HINT_WelcomeScreenTopComponent()); jEditorPane1.putClientProperty(SwingUtilities2.AA_TEXT_PROPERTY_KEY, null);
jTextPane1.setEditorKit(parser.getEditorKit()); jTextPane1.setEditorKit(parser.getEditorKit());
jTextPane1.setDocument(parser.getDocument()); jTextPane1.setDocument(parser.getDocument());
jTextPane1.addHyperlinkListener(this); jTextPane1.addHyperlinkListener(this);
jEditorPane1.addHyperlinkListener(this); jEditorPane1.addHyperlinkListener(new HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent he) {
if (he.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
try {
jEditorPane1.setPage(he.getURL());
} catch (IOException ex) {
try {
jEditorPane1.setPage(new URL(org.openide.util.NbBundle.getMessage(WelcomeScreenTopComponent.class, "WelcomeScreenTopComponent.local.link")));
} catch (IOException ex1) {
Exceptions.printStackTrace(ex1);
}
}
}
}
});
} }
/** /**
@ -72,16 +89,18 @@ public final class WelcomeScreenTopComponent extends TopComponent implements Hyp
jTextPane1 = new javax.swing.JTextPane(); jTextPane1 = new javax.swing.JTextPane();
jScrollPane2 = new javax.swing.JScrollPane(); jScrollPane2 = new javax.swing.JScrollPane();
jEditorPane1 = new javax.swing.JEditorPane(); jEditorPane1 = new javax.swing.JEditorPane();
jLabel1 = new javax.swing.JLabel();
setBackground(java.awt.Color.white); setBackground(java.awt.Color.white);
jPanel1.setBackground(new java.awt.Color(255, 255, 255)); jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jScrollPane3.setBorder(null); jScrollPane3.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
jScrollPane3.setOpaque(false); jScrollPane3.setOpaque(false);
jTextPane1.setEditable(false); jTextPane1.setEditable(false);
jTextPane1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(WelcomeScreenTopComponent.class, "WelcomeScreenTopComponent.jTextPane1.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Lucida Grande", 1, 13))); // NOI18N jTextPane1.setBorder(null);
jTextPane1.setContentType("text/html"); // NOI18N
jTextPane1.setFont(new java.awt.Font("Lucida Grande", 2, 12)); // NOI18N jTextPane1.setFont(new java.awt.Font("Lucida Grande", 2, 12)); // NOI18N
jTextPane1.setForeground(new java.awt.Color(0, 0, 204)); jTextPane1.setForeground(new java.awt.Color(0, 0, 204));
jTextPane1.setCaretColor(new java.awt.Color(255, 255, 255)); jTextPane1.setCaretColor(new java.awt.Color(255, 255, 255));
@ -89,31 +108,42 @@ public final class WelcomeScreenTopComponent extends TopComponent implements Hyp
jTextPane1.setOpaque(false); jTextPane1.setOpaque(false);
jScrollPane3.setViewportView(jTextPane1); jScrollPane3.setViewportView(jTextPane1);
jScrollPane2.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
jScrollPane2.setOpaque(false); jScrollPane2.setOpaque(false);
jEditorPane1.setEditable(false); jEditorPane1.setEditable(false);
jEditorPane1.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
jEditorPane1.setContentType("text/html"); // NOI18N
jEditorPane1.setCaretColor(new java.awt.Color(255, 255, 255)); jEditorPane1.setCaretColor(new java.awt.Color(255, 255, 255));
jEditorPane1.setOpaque(false); jEditorPane1.setOpaque(false);
jScrollPane2.setViewportView(jEditorPane1); jScrollPane2.setViewportView(jEditorPane1);
jLabel1.setFont(new java.awt.Font("Lucida Grande", 1, 14)); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(WelcomeScreenTopComponent.class, "WelcomeScreenTopComponent.jLabel1.text")); // NOI18N
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout); jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup( jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap() .addContainerGap()
.addComponent(jScrollPane2) .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 255, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 230, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap()) .addContainerGap())
); );
jPanel1Layout.setVerticalGroup( jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap() .addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2) .addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 436, Short.MAX_VALUE)) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 409, Short.MAX_VALUE))
.addComponent(jScrollPane2))
.addContainerGap()) .addContainerGap())
); );
@ -130,6 +160,7 @@ public final class WelcomeScreenTopComponent extends TopComponent implements Hyp
}// </editor-fold>//GEN-END:initComponents }// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables // Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JEditorPane jEditorPane1; private javax.swing.JEditorPane jEditorPane1;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane3;

@ -8,11 +8,15 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.util.List; import java.util.List;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException; import javax.swing.text.BadLocationException;
import javax.swing.text.Document; import javax.swing.text.Element;
import javax.swing.text.ElementIterator;
import javax.swing.text.StyleConstants;
import javax.swing.text.html.HTML; import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLDocument; import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet;
import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamException;
@ -63,6 +67,21 @@ public class RssFeedParser {
List<FeedMessage> msgs = feed.getMessages(); List<FeedMessage> msgs = feed.getMessages();
try { try {
doc.remove(0, doc.getLength()); doc.remove(0, doc.getLength());
ekit.insertHTML(doc, doc.getLength(),
"<html>"
+ "<head>"
+ "</head>"
+ "<body>",
0,
0,
null);
// ekit.insertHTML(doc, doc.getLength(),
// "<h1>"
// + "Latest News"
// + "</h1>",
// 0,
// 0,
// null);
for (FeedMessage feedMessage : msgs) { for (FeedMessage feedMessage : msgs) {
ekit.insertHTML(doc, doc.getLength(), ekit.insertHTML(doc, doc.getLength(),
"<h3><a href='" "<h3><a href='"
@ -86,6 +105,12 @@ public class RssFeedParser {
0, 0,
null); null);
} }
ekit.insertHTML(doc, doc.getLength(),
"</body>"
+ "</html>",
0,
0,
null);
doc.insertString(0, "", null); doc.insertString(0, "", null);
} catch (BadLocationException ex) { } catch (BadLocationException ex) {
Exceptions.printStackTrace(ex); Exceptions.printStackTrace(ex);

Loading…
Cancel
Save