Skip to content

Commit 37c98d5

Browse files
author
ag88
committed
v0.9.2 markdown/asciidoc viewer with dark mode, various refactoring
v0.9.2 markdown/asciidoc viewer with dark mode, various refactoring - reorganized HtmlPane and DocServiceLoader to viewer sub-module - HyperlinkListener is moved into HtmlPane and vaadin Open is used to launch browser. HtmlPane link launch on click is self-contained. Better user experience, with vaadin Open - added automatic junit tests in viewer submodule tests DocServiceLoader (all methods) and HtmlPane (load(), reload()) against org.jmarkdownviewer.service.md.MarkDownService MarkDownService is now default dependency for viewer submodule. i.e. MarkDown support is included by default with viewer submodule. - App classes e.g. mdaadocviewer, mdviewer now links viewer submodule as dependency and sub-class HtmlPane to add app specific functions.
1 parent e55fbd5 commit 37c98d5

File tree

23 files changed

+882
-764
lines changed

23 files changed

+882
-764
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ markdown-lib/target
88
mdadocviewer/target
99
mdviewer/target
1010
viewer/target
11+
archive

asciidoc-lib/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<artifactId>parent</artifactId>
66
<groupId>org.jmarkdownviewer</groupId>
7-
<version>0.9.1</version>
7+
<version>0.9.2</version>
88
</parent>
99

1010
<groupId>org.jmarkdownviewer</groupId>

docservice-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<artifactId>parent</artifactId>
66
<groupId>org.jmarkdownviewer</groupId>
7-
<version>0.9.1</version>
7+
<version>0.9.2</version>
88
</parent>
99

1010
<groupId>org.jmarkdownviewer</groupId>

markdown-lib/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<artifactId>parent</artifactId>
66
<groupId>org.jmarkdownviewer</groupId>
7-
<version>0.9.1</version>
7+
<version>0.9.2</version>
88
</parent>
99

1010
<groupId>org.jmarkdownviewer</groupId>

mdadocviewer/pom.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<artifactId>parent</artifactId>
66
<groupId>org.jmarkdownviewer</groupId>
7-
<version>0.9.1</version>
7+
<version>0.9.2</version>
88
</parent>
99

1010
<groupId>org.jmarkdownviewer</groupId>
@@ -27,6 +27,11 @@
2727
<artifactId>docservice-api</artifactId>
2828
<version>${project.version}</version>
2929
</dependency>
30+
<dependency>
31+
<groupId>org.jmarkdownviewer</groupId>
32+
<artifactId>viewer</artifactId>
33+
<version>${project.version}</version>
34+
</dependency>
3035
<dependency>
3136
<groupId>org.jmarkdownviewer</groupId>
3237
<artifactId>markdown-lib</artifactId>
@@ -37,11 +42,6 @@
3742
<artifactId>asciidoc-lib</artifactId>
3843
<version>${project.version}</version>
3944
</dependency>
40-
<dependency>
41-
<groupId>com.vaadin</groupId>
42-
<artifactId>open</artifactId>
43-
<version>8.5.0.4</version>
44-
</dependency>
4545
<dependency>
4646
<groupId>org.jsoup</groupId>
4747
<artifactId>jsoup</artifactId>

mdadocviewer/src/main/java/org/jmarkdownviewer/jmdviewer/MainFrame.java

Lines changed: 25 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,15 @@
4444

4545
import org.apache.logging.log4j.LogManager;
4646
import org.apache.logging.log4j.Logger;
47-
import org.jmarkdownviewer.jmdviewer.service.DocServiceLoader;
4847
import org.jmarkdownviewer.parser.MarkdownParser;
4948
import org.jmarkdownviewer.service.DocService;
49+
import org.jmarkdownviewer.viewer.HtmlPane;
50+
import org.jmarkdownviewer.viewer.service.DocServiceLoader;
5051

5152
import com.vaadin.open.Open;
5253

5354

54-
public class MainFrame extends JFrame implements ActionListener, HyperlinkListener {
55+
public class MainFrame extends JFrame implements ActionListener {
5556

5657
Logger log = LogManager.getLogger(MainFrame.class);
5758

@@ -116,12 +117,10 @@ public void createGui() {
116117
add(toolbar, BorderLayout.NORTH);
117118

118119
if (stylesheet == null)
119-
htmlpane = new HtmlPane();
120+
htmlpane = new MdAdocHtmlPane();
120121
else
121-
htmlpane = new HtmlPane(stylesheet);
122+
htmlpane = new MdAdocHtmlPane(stylesheet);
122123
JScrollPane scrollpane = new JScrollPane(htmlpane);
123-
124-
htmlpane.addHyperlinkListener(this);
125124

126125
getContentPane().add(scrollpane,BorderLayout.CENTER);
127126

@@ -177,43 +176,27 @@ private void doopen() {
177176
chooser.addChoosableFileFilter(filter);
178177
int ret = chooser.showOpenDialog(this);
179178
if (ret == JFileChooser.APPROVE_OPTION) {
179+
File file = chooser.getSelectedFile();
180+
180181
try {
181-
File file = chooser.getSelectedFile();
182-
DocService service;
183-
try {
184-
service = DocServiceLoader.getInstance().getProviderForFile(file);
185-
} catch (Exception e) {
186-
String msg = MessageFormat.format("unable to find loader/parser for {0}", file.getName());
187-
JOptionPane.showMessageDialog(this, msg,"Error", JOptionPane.ERROR_MESSAGE);
188-
return;
189-
}
190-
if (service != null) {
191-
htmlpane.setDocservice(service);
192-
htmlpane.load(file);
193-
} else {
194-
String msg = MessageFormat.format("unable to find loader/parser for {0}", file.getName());
195-
JOptionPane.showMessageDialog(this, msg,"Error", JOptionPane.ERROR_MESSAGE);
196-
}
197-
198-
} catch (IOException e) {
199-
JOptionPane.showMessageDialog(this, e.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
200-
}
182+
htmlpane.load(file);
183+
} catch (Exception e) {
184+
String msg = MessageFormat.format("unable load file {0}: {1}",
185+
file.getName(), e.getMessage());
186+
JOptionPane.showMessageDialog(this, msg,"Error", JOptionPane.ERROR_MESSAGE);
187+
return;
188+
}
201189
App.getInstance().setLastdir(chooser.getSelectedFile().getParent());
202190
}
203191
}
204192

205193
public void openfile(File file) {
206-
DocService service = DocServiceLoader.getInstance().getProviderForFile(file);
207-
if (service != null) {
208-
try {
209-
htmlpane.setDocservice(service);
210-
htmlpane.load(file);
211-
} catch (IOException e) {
212-
JOptionPane.showMessageDialog(this, e.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
213-
}
214-
} else {
215-
String msg = MessageFormat.format("unable to find loader/parser for {0}", file.getName());
216-
JOptionPane.showMessageDialog(this, msg,"Error", JOptionPane.ERROR_MESSAGE);
194+
try {
195+
htmlpane.load(file);
196+
} catch (Exception e) {
197+
String msg = MessageFormat.format("unable load file {0}: {1}",
198+
file.getName(), e.getMessage());
199+
JOptionPane.showMessageDialog(this, msg, "Error", JOptionPane.ERROR_MESSAGE);
217200
}
218201
}
219202

@@ -337,23 +320,6 @@ private void doabout() {
337320
}
338321

339322

340-
@Override
341-
public void hyperlinkUpdate(HyperlinkEvent e) {
342-
if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
343-
if(Desktop.isDesktopSupported()) {
344-
Open.open(e.getURL().toString());
345-
/*
346-
try {
347-
Desktop.getDesktop().browse(e.getURL().toURI());
348-
} catch (IOException e1) {
349-
e1.printStackTrace();
350-
} catch (URISyntaxException e1) {
351-
e1.printStackTrace();
352-
}
353-
*/
354-
}
355-
}
356-
}
357323

358324
@Override
359325
public void actionPerformed(ActionEvent e) {
@@ -363,7 +329,7 @@ public void actionPerformed(ActionEvent e) {
363329
} else if(cmd.equals("RELOAD")) {
364330
try {
365331
htmlpane.reload();
366-
} catch (IOException e1) {
332+
} catch (Exception e1) {
367333
JOptionPane.showMessageDialog(this, e1.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
368334
}
369335
} else if(cmd.equals("ABOUT")) {
@@ -379,16 +345,16 @@ public void actionPerformed(ActionEvent e) {
379345
htmlpane.setStyleSheet(url);
380346
try {
381347
htmlpane.reload();
382-
} catch (IOException e1) {
383-
log.error(e1.getMessage());
348+
} catch (Exception e2) {
349+
log.error(e2.getMessage());
384350
}
385351
} else if(cmd.equals("DARK")) {
386352
URL url = App.class.getResource("github-dark.css");
387353
htmlpane.setStyleSheet(url);
388354
try {
389355
htmlpane.reload();
390-
} catch (IOException e1) {
391-
log.error(e1.getMessage());
356+
} catch (Exception e3) {
357+
log.error(e3.getMessage());
392358
}
393359
} else if(cmd.equals("PRINT")) {
394360
doprint();
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.jmarkdownviewer.jmdviewer;
2+
3+
import java.net.URL;
4+
5+
import javax.swing.text.Document;
6+
import javax.swing.text.EditorKit;
7+
import javax.swing.text.html.HTMLEditorKit;
8+
9+
import org.jmarkdownviewer.viewer.HtmlPane;
10+
11+
public class MdAdocHtmlPane extends HtmlPane {
12+
13+
public MdAdocHtmlPane() {
14+
super();
15+
}
16+
17+
public MdAdocHtmlPane(URL url) {
18+
super(url);
19+
}
20+
21+
@Override
22+
protected void createPane(URL cssurl) {
23+
super.createPane(cssurl);
24+
25+
//HTMLEditorKit kit = (HTMLEditorKit) getEditorKit();
26+
27+
String imgsrc = App.class.getResource("markdown.png").toString();
28+
String imgsrcadoc = App.class.getResource("AsciiDoc-color.png").toString();
29+
30+
// create some simple html as a string
31+
32+
StringBuilder sb = new StringBuilder(256);
33+
sb.append("<html>\n");
34+
sb.append("<body>\n");
35+
sb.append("<h1>");
36+
sb.append("<img src=\"");
37+
sb.append(imgsrc);
38+
sb.append("\">");
39+
sb.append("&nbsp; Markdown ");
40+
sb.append("&amp; ");
41+
sb.append("<img src=\"");
42+
sb.append(imgsrcadoc);
43+
sb.append("\">");
44+
sb.append("&nbsp; AsciiDoc ");
45+
sb.append("Viewer</h1>\n");
46+
sb.append("<h2>Select a file</h2>\n");
47+
sb.append("<p>This is some sample text</p>\n");
48+
sb.append("</body>\n");
49+
sb.append("</html>");
50+
51+
setText(sb.toString());
52+
53+
}
54+
55+
}

mdadocviewer/src/main/java/org/jmarkdownviewer/jmdviewer/service/DocServiceLoader.java

Lines changed: 0 additions & 90 deletions
This file was deleted.

mdadocviewer/src/test/java/org/jmarkdownviewer/jmdviewer/AppTest.java

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)