MozSwingãšã¯äœããæãåºããŠãã ããã MozSwingã¯ããã©ãŠã¶ãswingã³ã³ããŒãã³ããšããŠåã蟌ãããã®å¯äžã®é©åãªïŒç§ã®æèŠã§ã¯ïŒç¡æã®ã¯ãã¹ãã©ãããã©ãŒã ãœãªã¥ãŒã·ã§ã³ã§ãã ããããæ®å¿µãªããšã«ããããžã§ã¯ãã¯ãšã©ãŒãå€ããã段éã§çµäºããŸããã ãããã®ãšã©ãŒã¯ãã¢ãŒããã¯ãã£ã®èšç®ãã¹ãšåæ§ã«ããããžã§ã¯ãã§ãã®ãœãªã¥ãŒã·ã§ã³ãããã®ãŸãŸã䜿çšããããšãèš±å¯ããŸããã ãããä¿®æ£ããããšããæµæã§ããªã欲æ±ã§ãç§ã¯ä»äºã«åãæãããç§ã¯äœããããŸããã
ïŒSwingã³ã³ããŒãã³ããšããŠã®Mozillaãã©ãŠã¶ãŒçµ±åã«é¢ããèšäºïŒã
MozSwingãæªãçç±ãããããããMozSwingããã¡ã ãšã¯æããªããããã¯ãšãŠãæè¬ããªããã°ãªããªã倧ããªä»äºã ïŒç§ã®ä»äºã¯ãã£ãšå°ãªãïŒããMozSwingã¯ç§ã«ã¯åœ¹ã«ç«ããªãã
- ããŒãžã§ã³1.9.2ãããå Žåã xulrunnerã®ãµããŒã `ããŒãžã§ã³1.9ã®ã¿ïŒã¡ãªã¿ã«ãWindowsã·ã¹ãã ã®ãã¹ã§ãã·ã¢æåããµããŒãããŸããïŒã
- èšå€§ãªæ°ã®éçã¯ã©ã¹ãšã¡ãœãããè³ãåŒãè£ããããMozSwingãç Žå£äžå¯èœãªå²©ãšããŠç§ãã¡ã®åã«çŸããŸãã ãã®äžã®äœããå€æŽããã«ã¯ãMozSwingã®å Žåã®ç¶æ¿ãæ©èœããªãããããã§ã«ããŒããããŠããã¯ã©ã¹ã®ãã€ãã³ãŒããå€æŽããå¿
èŠããããŸãã
- nsIWindowCreator ïŒãã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããã¯ã©ã¹ã¯ãã©ãŠã¶çšã®ãŠã£ã³ããŠãäœæããŸãïŒãæ瀺çã«ãªãŒããŒã©ã€ãã§ããªããããMozSwingã¯æ°ãããŠã£ã³ããŠã§æ°ããããŒãžãéãããšã奜ããããã¿ããšããŠãã©ãŠã¶ãäœæããæŸèæãçºæããå¿
èŠããããŸãã ããšãã°ãåæååŸã«nsIWindowCreatorã眮ãæããæ¹æ³ã次ã«ç€ºããŸãã
nsIWindowWatcher winWatcher = XPCOMUtils.getService( "@mozilla.org/embedcomp/window-watcher;1" , nsIWindowWatcher. class ); //$NON-NLS-1$
winWatcher.setWindowCreator(wndCreator);
* This source code was highlighted with Source Code Highlighter .
ãã ããMozSwingã¯éçã¯ã©ã¹ãã¡ãœãããæããnsIWindowCreatorãå
éšçã«åç
§ãããããæœåšçãªãšã©ãŒã¯ããã«é ãããŠããŸãã - ã³ãŒãã§ã®éåžžã«çããã決å®ïŒMozSwingã®ãœãŒã¹ïŒå¿µã®ããã3ã€ã®ãŠã£ã³ããŠã®ããŒã«ãäœæããã次ã«ãã®ããŒã«ãããŠã£ã³ããŠãååŸããŠãã©ãŠã¶ãŒãçµã¿èŸŒãããïŒïŒ
/**
* When mozilla does a callback to createChromeWindow()
* we need to create a swing window. But doing this on
* Swing thread using invokeAndWait sometimes ends
* with deadlock in AWT.
* Therefore we keep a list of precreated windows
* in case we will need them.
*/
private List <IMozillaWindow> precreatedWins = new LinkedList<IMozillaWindow>();
public void ensurePrecreatedWindows() {
ensurePrecreatedWindows(3);
}
public void ensurePrecreatedWindows( int winNum) {
assert !isMozillaThread(); //has to be called from swing
while (precreatedWins.size()<winNum) {
if (winFactory== null ) return ;
IMozillaWindow w = winFactory.create( false );
if (!(w instanceof Component)) return ;
// w is instance of something we can work with
precreatedWins.add(w);
Component c = (Component)w;
c.addNotify();
}
}
* This source code was highlighted with Source Code Highlighter .
ç¹ã«æãã®ã¯3çªã§ãã ãã®çš®ã®ãã³ãã¯ãååãšããŠ3ã€ã®ãŠã£ã³ããŠã§ååã§ãããšããããšã§ã...ãããã... - ã³ã³ããã¹ãã³ãã³ãïŒã³ã³ããã¹ãã¡ãã¥ãŒïŒã®ãµããŒããæå¹ã«ããã«ã¯ãäžéšã®MozSwingã¡ãœãããå€æŽããå¿
èŠããããŸãã äŸïŒ
@SuppressWarnings( "deprecation" )
public static void replaceChromeAdapterMethod() {
try {
ClassPool classPool = ClassPool.getDefault();
CtClass ctClass = classPool. get ( "org.mozilla.browser.impl.ChromeAdapter" );
CtMethod ctMethod = ctClass.getMethod( "queryInterface" , "(Ljava/lang/String;)Lorg/mozilla/interfaces/nsISupports;" );
ctMethod.setBody( "{ return ru.redstonegroup.geo.gui.components.browser.impl.QueryInterfaceImpl.getInstance().queryInterface(this, $1); }" );
ctClass.toClass(QueryInterfaceImpl. class .getClassLoader());
} catch (Throwable e) {
logger.error(e.getMessage(), e);
}
}
* This source code was highlighted with Source Code Highlighter .
- äžéšã®Linuxã·ã¹ãã ïŒubuntuãopenSUSEïŒã§Sun JVMãåžžã«ããããããŸãã
- ãœãŒã¹ã³ãŒãã®è€éãïŒãšããã§ãããã¯XPCOMãã¯ãããžèªäœã®è€éãã«ãããã®ã§ãïŒã
- Mavenãšã®çµ±åã¯ãããŸããã
- IoCã³ã³ãããšçµ±åããã®ã¯é£ããã
- ããªã«ãªãã§ãŠã£ã³ããŠãäœæããããšã¯ã§ããŸããããããã¯é衚瀺ã«ããã§ããŸããã
Jbrowserãã¡ãããå¹»æ³ã¯ãããŸãã-ç§ã®è§£æ±ºçã¯å®ç§ã§ã¯ãããŸãããMozSwingã«åºã¥ããŠãããããå€ãã®ç
æ°ãæ¡çšããŠããŸãã å¿
èŠã«å¿ããŠãJBrowserã¯ãå®éã®ã·ã¹ãã ã«ããé©ããMozSwingã®åèã§ãã ãŸããå°ãªããšãç§ã¯ç§ã®APIãäœåã奜ãã§ãïŒããªãã¯ãŸã£ãã奜ãã§ã¯ãªããããããŸãããïŒã
ç§ãæã£ãŠããMozSwingã«ç²Ÿéãããšãã®äž»ãªåé¡ã¯ãåäžã®ãšã³ããªãã€ã³ãããªãããšã§ããããã©ãŠã¶ã®äœæã¯ãã³ã³ããŒãã³ãã®åçŽãªäœæãšããŠå®è¡ãããŸããïŒæ°ããMozillaWindowã®ãããªãã®ãç³ãèš³ãããŸããããæ£ç¢ºã«æãåºããŸããïŒã ã¯ãããã©ãŠã¶ãŠã£ã³ããŠãäœæããã ãã§ãªãããã©ãŠã¶ãã©ã®ããã«æ§æããå¿
èŠãããéããããæå³ã§äŸ¿å©ã§ãã 1ã€ã®ãªãã·ã§ã³ã¯ãMozSwingã³ã³ããŒãã³ãããç¶æ¿ããå
éšãç»ããæãæãæã...
ããã«ç解ã§ããŸããã§ããïŒãã©ãŠã¶ã®ãããã·ãµãŒããŒèšå®ãå€æŽããæ¹æ³ã¯ïŒ ãã°ããããŠã察å¿ããMozillaConfigã¯ã©ã¹ãšéçsetProxyã¡ãœããïŒãŸãã¯ãã®ãããªãã®ïŒãããããšãå€æããŸããã ãªããŠãã£ãããœãŒã¹ãéããŠããªãã£ããã©ããã¯ããããªãã äžè¬ã«ãç§ã«ãšã£ãŠããã¯ãã¹ãŠæããã§ã¯ãããŸããã
ãããã£ãŠãJBrowserã¯ãèšèšã®ç¹ã§ãããçš®ã®å察ïŒçŸåšã¯å®å
šã§ã¯ãããŸããïŒMozSwingã§ãã JBrowserã«ã¯ã
BrowserManagerã€ã³ã¿ãŒãã§ã€ã¹ãšãããšã³ããªãã€ã³ãããããŸãã ããã¯ãxulrunnerãšswingã®æé«ã¬ãã«ã®çµ±åã§ãã ã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããã¯ã©ã¹ã¯ããããªãäœæ¥ã®æºåãããããããã¹ãŠã®åæåãå®è¡ããŸãã åæåã«å ããŠãå®è£
ã¯ã©ã¹ã¯ãæåã®èŠæ±ã«å¿ããŠããã¹ãŠã®ãã©ãŠã¶ãŒã®æäœããªã·ãŒïŒç»åããããã·ãªã©ãæå¹/ç¡å¹ã«ããïŒã調æŽã§ãã
BrowserConfigã€ã³ã¿ãŒãã§ã€ã¹ã®ç¹å®ã®å®è£
ãæäŸããå¿
èŠããããŸãã
äžäœã¬ãã«ã®çµ±åãšã¯å¯Ÿç
§çã«ãJBrowserã®çµ±åã®æäœã¬ãã«ã¯ãããããããã©ãŠã¶ã³ã³ããŒãã³ããã§ãã ãã¹ãŠã®ãã©ãŠã¶ã³ã³ããŒãã³ãã¯ã
JBrowserComponentã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããŸãã ãã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãSwingã³ã³ããŒãã³ãã®æ©èœãçµã¿åãããŠã
ãã©ãŠã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããã³ã³ããžããã§ãã
/**
* Swing // Browser embedded in swing component
* @author caiiiycuk
*/
public interface JBrowserComponent<T extends Component> extends DisplayableComponent, Browser, NativeBrowser {
/**
* @return See {@link java.awt.Component}
*/
T getComponent();
...
}
* This source code was highlighted with Source Code Highlighter .
JBrowserCanvasããããŸã-ãã®ã€ã³ã¿ãŒãã§ãŒã¹ã®åºæ¬çãªå®è£
ã§ãã ããã¯ããã©ãŠã¶ãçµã¿èŸŒãŸããCanvas Swingã³ã³ããŒãã³ãã«ä»ãªããŸããã ä»ã®ãã©ãŠã¶ã³ã³ããŒãã³ãã®å®è£
ã¯ãã»ãŒåžžã«JBrowserCanvasãã©ããããŸãïŒåŒã³åºããããªã²ãŒãããŸãïŒã ããšãã°ãå¥ã®
JBrowserFrameãã©ãŠã¶ãŒ
ã³ã³ããŒãã³ã ïŒãã©ãŠã¶ãŒãšJFrameïŒããããå®è¡ããŸãã
ããã2ã€ã®å察åŽã®éã«ã¯ããã¹ãŠã1ã€ã®å
šäœã«çµåããå¥ã®ãªã³ã¯ããããŸããããã¯ãã¡ã¯ããªã¬ã€ã€ãŒïŒãã¡ã¯ã¿ãŒã¬ã€ã€ãŒïŒã§ãã BrowserManagerã«åºã¥ããŠæäžäœã®çµ±åã¬ã€ã€ãŒãäœæããåŸã
ComponentFactoryã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããå€æ°ã®ãã©ãŠã¶ãŒã³ã³ããŒãã³ããã¡ã¯ã¿ãŒãäœæã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã«ãã®ãããªèŠçŽ ãããã€ãå«ãŸããŠããå Žåã¯æ£åžžã§ãã ã¡ãœãããéããŠé©åã«æ§æãããèŠçŽ ã¯ããã©ãŠã¶ã³ã³ããŒãã³ãã®ç¹å®ã®å®è£
ãäœæããŸãã ã¢ããªã±ãŒã·ã§ã³ã§æ¬¡ã®èŠçŽ ã䜿çšãããšããŸããJFrameBrowserFactoryïŒæ°ãããŠã£ã³ããŠãšããŠãã©ãŠã¶ãŒãäœæïŒãJTabbedBrowserFactoryïŒæ°ããã¿ããšããŠãã©ãŠã¶ãŒãäœæïŒã ãã®ã¹ããŒã ã®ãããã§ãäœæãããã©ãŠã¶ã³ã³ããŒãã³ããã«ã¹ã¿ãã€ãºããåé¡ãç°¡åã«è§£æ±ºããããšãå¯èœã«ãªããŸãã
ãããã£ãŠãããã«JBrowserãšã®äžé£ã®äœæ¥å
šäœããããŸãïŒBrowserManagerãäœæãïŒã¡ãªã¿ã«ããã®ããã«
ãã«ããŒã䜿çš/䜿çšããå¿
èŠããããŸãïŒããã©ãŠã¶ãŒã³ã³ããŒãã³ãçšã«å°ãªããšã1ã€ã®ãã¡ã¯ã¿ãŒãäœæããæåŸã«factorã䜿çšããŠãã©ãŠã¶ãŒãäœæããŸãã JBrowserã䜿çšããæãç°¡åãªæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
public class GettingStartedSnippet {
public static void main( String [] args) {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(( int ) (screenSize.getWidth() * 0.75f),
( int ) (screenSize.getHeight() * 0.75f));
frame.setLocationRelativeTo( null );
BrowserManager browserManager =
new JBrowserBuilder().buildBrowserManager();
JComponentFactory<Canvas> canvasFactory = browserManager.getComponentFactory(JBrowserCanvas. class );
JBrowserComponent<?> browser = canvasFactory.createBrowser();
frame.getContentPane().add(browser.getComponent());
frame.setVisible( true );
browser.setUrl( "http://code.google.com/p/jbrowser/" );
}
}
* This source code was highlighted with Source Code Highlighter .
ãªãèŠå ãªã®ãïŒ ããã¯éåžžã«äŸ¿å©ã ãšæããŸãïŒããããééã£ãŠããŸãïŒã ããšãã°ãIoCã³ã³ãããŒã«ãã¡ã¯ã¿ãŒãç»é²ããã¢ããªã±ãŒã·ã§ã³ã®ã»ãŒãã¹ãŠã®éšåããç°¡åã«ã¢ã¯ã»ã¹ã§ãããããå°ãªããšãæåŸã®ã¡ãã¥ãŒã§æ°ãããã©ãŠã¶ãŒã¿ããäœæãããã¿ã³ãäœæã§ããŸãã
ãã®ã¢ãŒããã¯ãã£ã®å©ç¹ã¯ããããã®3ã€ã®ã¬ãã«ã®ãããããæžãæããŠããŸã åäœããŠããã·ã¹ãã ãååŸã§ããããšã§ãã
MozSwingã«ãªãã£ãæ©èœã€ã³ã¿ãŒãã§ãŒã¹ã®å®å
šãªåèšèšã«å ããŠãããã«ããã€ãã®æ©èœããããŸãã
- éããŠããããŒãžã®favIconïŒbrowser.getFavIconïŒïŒïŒãç°¡åã«ååŸã§ããããã«ãªããŸããã
- ã³ã³ããã¹ãã¡ãã¥ãŒãç°¡åã«åã蟌ãããšãå¯èœã«ãªããŸããã
- Mavenãšã®å®å
šãªçµ±åã ãã®ç¹ã§ãJBrowserã¯ç°¡åã«æ¥ç¶ã§ããã¿ãŒã²ããã·ã¹ãã çšã«ç°¡åã«ã¢ã»ã³ãã«ã§ããŸãïŒpom.xmlã®ãããã¡ã€ã«ãå€æŽããããšã«ããïŒã çŸæç¹ã§ã¯ãMozSwingããµããŒããããã®ã¯ãã¹ãŠãµããŒããããŠããŸã-winãlinuxãsolarisãmacã
ãããžã§ã¯ããªã³ã¯ïŒ
JBrowserãããžã§ã¯ã
ïŒå®å®ïŒå€ãã®äŸããããããžã§ã¯ã
ïŒdevïŒEclipseã§
JBrowserãããã«äœ¿ãå§ããæ¹æ³
倱æãããã®æ®å¿µãªãããXulrunner 1.9.2ã¯ãŸã ãµããŒããããŠããŸããããäºåãããããã³ãã«ã®çµããã®ã©ã€ããèŠããŸãã
Jwebpan圌ããã€ãåºãŠãäžçãæãããšãé¡ã£ãŠããŸãã ãã®ãããžã§ã¯ããæ¬åœã«æ¥œãã¿ã«ããŠããŸãã