View Javadoc

1   
2   package org.catacomb.druid.gui.base;
3   
4   import org.catacomb.druid.swing.DHTMLPane;
5   import org.catacomb.druid.swing.DScrollPane;
6   import org.catacomb.interlish.content.StringValue;
7   import org.catacomb.interlish.structure.*;
8   
9   
10  import java.awt.Color;
11  import java.awt.Dimension;
12  import java.awt.Rectangle;
13  
14  
15  public class DruScrollingHTMLPanel extends DruPanel
16      implements TextSettable, PageDisplay, ValueWatcher {
17      static final long serialVersionUID = 1001;
18  
19      DHTMLPane dHTMLPane;
20  
21      PageSupplier pageSupplier;
22  
23      boolean preformat = false;
24  
25      StringValue stringValue;
26  
27  
28      public DruScrollingHTMLPanel() {
29          super();
30          setSingle();
31          DScrollPane dsp =  new DScrollPane();
32          dsp.setVerticalScrollBarAlways();
33          addDComponent(dsp);
34  
35          dHTMLPane = new DHTMLPane();
36          dHTMLPane.setDefaultStyleSheet();
37  
38          dsp.setViewportView(dHTMLPane);
39      }
40  
41  
42      public void setPreformat(boolean b) {
43          preformat = b;
44      }
45  
46  
47      public void setStylesheetPath(String s) {
48          dHTMLPane.setStylesheetPath(s);
49      }
50  
51      public void setText(String sin) {
52          String s = sin;
53          if (preformat) {
54              s = "<pre>\n" + s + "\n</pre>\n";
55          }
56  
57          setContent(s);
58      }
59  
60  
61      public void setBg(Color c) {
62          dHTMLPane.setBg(c);
63          super.setBg(c);
64      }
65  
66  
67      public void setContent(String s) {
68          dHTMLPane.showHTML(s);
69      }
70  
71  
72      public void setPageSupplier(PageSupplier ps) {
73          pageSupplier = ps;
74          showPage(ps.getPage("/"));
75      }
76  
77  
78      public void showPage(Page p) {
79          dHTMLPane.showHTML(p.getHTMLText());
80      }
81  
82      public void setStringValue(StringValue sv) {
83          if (stringValue != null) {
84              stringValue.removeValueWatcher(this);
85          }
86          stringValue = sv;
87          if (stringValue == null) {
88              dHTMLPane.showHTML("");
89          } else {
90              exportStringValueContent();
91  
92              stringValue.addValueWatcher(this);
93          }
94      }
95  
96  
97      public void valueChangedBy(Value pv, Object src) {
98          exportStringValueContent();
99      }
100 
101 
102     private void exportStringValueContent() {
103         String s = "";
104         if (stringValue != null) {
105             s = stringValue.getString();
106         }
107         setText(s);
108     }
109 
110 
111     public Dimension getPreferredScrollableViewportSize() {
112         return getPreferredSize();
113     }
114     public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
115         return 10;
116     }
117 
118     public boolean getScrollableTracksViewportHeight() {
119         return false;
120     }
121 
122     public boolean getScrollableTracksViewportWidth() {
123         return true;
124     }
125     public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
126         return 10;
127     }
128 
129 }