Changeset 84 for java/main/src/main/java/com/framsticks/gui/Browser.java
- Timestamp:
- 06/22/13 21:51:33 (11 years ago)
- Location:
- java/main
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main
-
Property
svn:ignore
set to
target
-
Property
svn:ignore
set to
-
java/main/src/main/java/com/framsticks/gui/Browser.java
r78 r84 4 4 import com.framsticks.observers.Endpoint; 5 5 import com.framsticks.observers.Observer; 6 import com.framsticks.util.Dispatcher; 6 import com.framsticks.util.Logging; 7 import com.framsticks.util.dispatching.Dispatcher; 8 import com.framsticks.util.dispatching.Future; 9 10 import org.apache.commons.configuration.Configuration; 11 import org.apache.commons.lang.ArrayUtils; 7 12 import org.apache.log4j.Logger; 8 13 9 14 import javax.swing.*; 15 16 import java.awt.Dimension; 17 import java.util.ArrayList; 10 18 import java.util.HashSet; 19 import java.util.List; 11 20 import java.util.Set; 12 21 … … 16 25 public class Browser extends Observer implements Dispatcher { 17 26 18 private static final Logger LOGGER = Logger.getLogger(Browser.class.getName()); 19 20 protected final Set<Frame> frames = new HashSet<Frame>(); 21 protected MainFrame mainFrame; 22 23 public void addFrame(Frame frame) { 24 frames.add(frame); 25 } 26 27 public Browser(Parameters parameters) { 28 super(parameters); 29 dispatcher = SwingDispatcher.instance; 30 invokeLater(new Runnable() { 31 @Override 32 public void run() { 33 assert isActive(); 34 35 } 36 }); 27 private static final Logger log = Logger.getLogger(Browser.class.getName()); 28 29 protected final Set<Frame> frames = new HashSet<Frame>(); 30 protected MainFrame mainFrame; 31 public List<PanelProvider> panelProviders = new ArrayList<PanelProvider>(); 32 protected Dimension defaultFrameDimension; 33 34 public void addFrame(Frame frame) { 35 frames.add(frame); 36 } 37 38 public Browser() { 39 JPopupMenu.setDefaultLightWeightPopupEnabled(false); 40 addPanelProvider(new StandardPanelProvider()); 41 } 42 43 @Override 44 public void configure(Configuration config) { 45 super.configure(config); 46 47 defaultFrameDimension = new Dimension(config.getInteger("size.width", 1000), config.getInteger("size.height", 500)); 48 49 for (String name : config.getStringArray("panel_providers")) { 50 try { 51 Class<?> c = Class.forName(name); 52 if (ArrayUtils.indexOf(c.getInterfaces(), PanelProvider.class) == -1) { 53 continue; 54 } 55 PanelProvider p = (PanelProvider)c.newInstance(); 56 addPanelProvider(p); 57 } catch (Exception e) { 58 log.error("failed to load PanelProvider " + name + ": " + e); 59 } 60 } 61 62 // for (final String path : config.getStringArray("resolve_paths")) { 63 // invokeLater() 64 // autoResolvePath(path, new Future<Path>() { 65 // @Override 66 // public void result(Path p, Exception e) { 67 // Logging.log(log, "auto resolve path", path, e); 68 // } 69 // }); 70 // } 71 } 72 73 public void addPanelProvider(PanelProvider panelProvider) { 74 log.debug("added panel provider of type: " + panelProvider.getClass().getCanonicalName()); 75 panelProviders.add(panelProvider); 76 } 77 78 public void autoResolvePath(final String path, final Future<Path> future) { 79 final Instance i = endpoints.get("localhost").getInstance(); 80 i.invokeLater(new Runnable() { 81 @Override 82 public void run() { 83 i.resolveAndFetch(path, new Future<Path>() { 84 @Override 85 public void result(final Path p, Exception e) { 86 Logging.log(log, "auto resolve path", path, e); 87 if (future != null) { 88 future.result(p, e); 89 } 90 if (e == null) { 91 mainFrame.invokeLater(new Runnable() { 92 @Override 93 public void run() { 94 mainFrame.goTo(p); 95 } 96 }); 97 } 98 } 99 }); 100 } 101 }); 37 102 } 38 103 39 104 public void clear() { 40 assert isActive(); 41 for (Frame f : frames) { 42 f.clear(); 43 } 44 } 45 46 @Override 47 protected void configure() throws Exception { 48 super.configure(); 49 } 50 51 52 @Override 53 public void run() { 54 super.run(); 55 56 try { 57 UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); 58 } catch (Exception ex) { 59 LOGGER.warn("failed loading Look&Feel: ", ex); 60 } 61 javax.swing.JFrame.setDefaultLookAndFeelDecorated(true); 62 63 mainFrame = new MainFrame(Browser.this); 64 addFrame(mainFrame); 65 66 for (Frame f : frames) { 67 f.configure(); 68 } 69 70 for (final Endpoint e : getEndpoints().values()) { 71 e.invokeLater(new Runnable() { 72 @Override 73 public void run() { 74 final Path p = new Path(e.getInstance(), "/"); 75 invokeLater(new Runnable() { 76 @Override 77 public void run() { 78 mainFrame.addRootPath((BrowserEndpoint) e, p); 79 } 80 }); 81 } 82 }); 83 84 } 85 86 for (Frame f : frames) { 87 f.setVisible(true); 88 } 89 } 90 91 public void createTreeNodeForChild(final Path path) { 92 assert !isActive(); 93 //assert instance.isActive(); 105 assert isActive(); 106 for (Frame f : frames) { 107 f.clear(); 108 } 109 } 110 111 @Override 112 public void run() { 113 super.run(); 114 115 assert isActive(); 116 117 try { 118 boolean found = false; 119 // for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { 120 // log.info("look and feel available: " + info.getName()); 121 // if ("Nimbus".equals(info.getName())) { 122 // UIManager.setLookAndFeel(info.getClassName()); 123 // found = true; 124 // break; 125 // } 126 // } 127 if (!found) { 128 UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); 129 } 130 } catch (Exception ex) { 131 log.warn("failed loading Look&Feel: ", ex); 132 } 133 134 javax.swing.JFrame.setDefaultLookAndFeelDecorated(true); 135 136 mainFrame = new MainFrame(Browser.this); 137 addFrame(mainFrame); 138 139 for (Frame f : frames) { 140 f.configure(); 141 } 142 143 for (final Endpoint e : getEndpoints().values()) { 144 e.invokeLater(new Runnable() { 145 @Override 146 public void run() { 147 final Path p = e.getInstance().getRootPath(); 148 invokeLater(new Runnable() { 149 @Override 150 public void run() { 151 mainFrame.addRootPath((BrowserEndpoint) e, p); 152 } 153 }); 154 } 155 }); 156 } 157 158 for (Frame f : frames) { 159 f.setVisible(true); 160 } 161 162 // autoResolvePath("/simulator/genepools/groups/0", null); 163 // autoResolvePath("/", null); 164 } 165 166 public void createTreeNodeForChild(final Path path) { 167 assert !isActive(); 168 //assert instance.isActive(); 94 169 95 170 96 171 /* 97 98 99 100 101 102 103 104 105 106 107 LOGGER.debug(child.getClass().getSimpleName() + " created: " + child);108 109 110 111 112 113 114 115 172 final TreeNode parentTreeNode = (TreeNode) child.getParent().getUserObject(); 173 if (parentTreeNode == null) { 174 Dispatching.invokeDispatch(this, manager, new Runnable() { 175 @Override 176 public void run() { 177 createTreeNodeForChild(child); 178 } 179 }); 180 return; 181 } 182 log.debug(child.getClass().getSimpleName() + " created: " + child); 183 184 185 invokeLater(new Runnable() { 186 @Override 187 public void run() { 188 parentTreeNode.getOrCreateChildTreeNodeFor(child); 189 } 190 }); 116 191 */ 117 192 } 118 193 119 194 120 @Override 121 protected Endpoint createEndpoint() { 122 return new BrowserEndpoint(); 123 } 195 @Override 196 protected Endpoint createEndpoint() { 197 return new BrowserEndpoint(); 198 } 199 200 @Override 201 public Dispatcher createDefaultDispatcher() { 202 return SwingDispatcher.instance; 203 } 204 205 /** 206 * @return the mainFrame 207 */ 208 public MainFrame getMainFrame() { 209 return mainFrame; 210 } 124 211 125 212 }
Note: See TracChangeset
for help on using the changeset viewer.