| <!DOCTYPE html> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
| |
| <meta name="description" content="Javadoc API documentation for org.eclipse.sisu.inject." /> |
| |
| <!-- <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.ico" /> --> |
| <title> |
| |
| Mediator |
| |
| |
| | org.eclipse.sisu.inject |
| |
| </title> |
| <link href="../../../../assets/doclava-developer-docs.css" rel="stylesheet" type="text/css" /> |
| <link href="../../../../assets/customizations.css" rel="stylesheet" type="text/css" /> |
| <script src="../../../../assets/search_autocomplete.js" type="text/javascript"></script> |
| <script src="../../../../assets/jquery-resizable.min.js" type="text/javascript"></script> |
| <script src="../../../../assets/doclava-developer-docs.js" type="text/javascript"></script> |
| <script src="../../../../assets/prettify.js" type="text/javascript"></script> |
| <script type="text/javascript"> |
| setToRoot("../../../", "../../../../assets/"); |
| </script> |
| <script src="../../../../assets/doclava-developer-reference.js" type="text/javascript"></script> |
| <script src="../../../../assets/navtree_data.js" type="text/javascript"></script> |
| <script src="../../../../assets/customizations.js" type="text/javascript"></script> |
| <noscript> |
| <style type="text/css"> |
| html,body{overflow:auto;} |
| #body-content{position:relative; top:0;} |
| #doc-content{overflow:visible;border-left:3px solid #666;} |
| #side-nav{padding:0;} |
| #side-nav .toggle-list ul {display:block;} |
| #resize-packages-nav{border-bottom:3px solid #666;} |
| </style> |
| </noscript> |
| </head> |
| |
| <body class=""> |
| |
| <div id="header"> |
| <div id="headerLeft"> |
| |
| <span id="masthead-title">org.eclipse.sisu.inject</span> |
| |
| </div> |
| <div id="headerRight"> |
| |
| <div id="search" > |
| <div id="searchForm"> |
| <form accept-charset="utf-8" class="gsc-search-box" |
| onsubmit="return submit_search()"> |
| <table class="gsc-search-box" cellpadding="0" cellspacing="0"><tbody> |
| <tr> |
| <td class="gsc-input"> |
| <input id="search_autocomplete" class="gsc-input" type="text" size="33" autocomplete="off" |
| title="search developer docs" name="q" |
| value="search developer docs" |
| onFocus="search_focus_changed(this, true)" |
| onBlur="search_focus_changed(this, false)" |
| onkeydown="return search_changed(event, true, '../../../')" |
| onkeyup="return search_changed(event, false, '../../../')" /> |
| <div id="search_filtered_div" class="no-display"> |
| <table id="search_filtered" cellspacing=0> |
| </table> |
| </div> |
| </td> |
| <td class="gsc-search-button"> |
| <input type="submit" value="Search" title="search" id="search-button" class="gsc-search-button" /> |
| </td> |
| <td class="gsc-clear-button"> |
| <div title="clear results" class="gsc-clear-button"> </div> |
| </td> |
| </tr></tbody> |
| </table> |
| </form> |
| </div><!-- searchForm --> |
| </div><!-- search --> |
| |
| </div> |
| </div><!-- header --> |
| |
| |
| <div class="g-section g-tpl-240" id="body-content"> |
| <div class="g-unit g-first side-nav-resizable" id="side-nav"> |
| <div id="swapper"> |
| <div id="nav-panels"> |
| <div id="resize-packages-nav"> |
| <div id="packages-nav"> |
| <div id="index-links"> |
| <a href="../../../packages.html" >Package Index</a> | |
| <a href="../../../classes.html" >Class Index</a> |
| </div> |
| <ul> |
| |
| <li class="selected api apilevel-"> |
| <a href="../../../org/eclipse/sisu/package-summary.html">org.eclipse.sisu</a></li> |
| <li class="api apilevel-"> |
| <a href="../../../org/eclipse/sisu/bean/package-summary.html">org.eclipse.sisu.bean</a></li> |
| <li class="api apilevel-"> |
| <a href="../../../org/eclipse/sisu/inject/package-summary.html">org.eclipse.sisu.inject</a></li> |
| <li class="api apilevel-"> |
| <a href="../../../org/eclipse/sisu/launch/package-summary.html">org.eclipse.sisu.launch</a></li> |
| <li class="api apilevel-"> |
| <a href="../../../org/eclipse/sisu/osgi/package-summary.html">org.eclipse.sisu.osgi</a></li> |
| <li class="api apilevel-"> |
| <a href="../../../org/eclipse/sisu/space/package-summary.html">org.eclipse.sisu.space</a></li> |
| <li class="api apilevel-"> |
| <a href="../../../org/eclipse/sisu/wire/package-summary.html">org.eclipse.sisu.wire</a></li> |
| <li class="api apilevel-"> |
| <a href="../../../org/sonatype/inject/package-summary.html">org.sonatype.inject</a></li> |
| </ul><br/> |
| </div> <!-- end packages --> |
| </div> <!-- end resize-packages --> |
| <div id="classes-nav"> |
| <ul> |
| |
| <li><h2>Interfaces</h2> |
| <ul> |
| <li class="api apilevel-"><a href="../../../org/eclipse/sisu/BeanEntry.html">BeanEntry</a><Q extends <a href="http://docs.oracle.com/javase/6/docs/api/index.html?java/lang/annotation/Annotation.html">Annotation</a>, T></li> |
| <li class="selected api apilevel-"><a href="../../../org/eclipse/sisu/Mediator.html">Mediator</a><Q extends <a href="http://docs.oracle.com/javase/6/docs/api/index.html?java/lang/annotation/Annotation.html">Annotation</a>, T, W></li> |
| </ul> |
| </li> |
| |
| |
| <li><h2>Annotations</h2> |
| <ul> |
| <li class="api apilevel-"><a href="../../../org/eclipse/sisu/Description.html">Description</a></li> |
| <li class="api apilevel-"><a href="../../../org/eclipse/sisu/Dynamic.html">Dynamic</a></li> |
| <li class="api apilevel-"><a href="../../../org/eclipse/sisu/EagerSingleton.html">EagerSingleton</a></li> |
| <li class="api apilevel-"><a href="../../../org/eclipse/sisu/Hidden.html">Hidden</a></li> |
| <li class="api apilevel-"><a href="../../../org/eclipse/sisu/Nullable.html">Nullable</a></li> |
| <li class="api apilevel-"><a href="../../../org/eclipse/sisu/Parameters.html">Parameters</a></li> |
| <li class="api apilevel-"><a href="../../../org/eclipse/sisu/Priority.html">Priority</a></li> |
| <li class="api apilevel-"><a href="../../../org/eclipse/sisu/Typed.html">Typed</a></li> |
| </ul> |
| </li> |
| |
| |
| |
| </ul><br/> |
| </div><!-- end classes --> |
| </div><!-- end nav-panels --> |
| <div id="nav-tree" style="display:none"> |
| <div id="index-links"> |
| <a href="../../../packages.html" >Package Index</a> | |
| <a href="../../../classes.html" >Class Index</a> |
| </div> |
| </div><!-- end nav-tree --> |
| </div><!-- end swapper --> |
| </div> <!-- end side-nav --> |
| <script> |
| if (!isMobile) { |
| <!-- $("<a href='#' id='nav-swap' onclick='swapNav();return false;' style='font-size:10px;line-height:9px;margin-left:1em;text-decoration:none;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>").appendTo("#side-nav"); --> |
| chooseDefaultNav(); |
| if ($("#nav-tree").is(':visible')) { |
| init_default_navtree("../../../"); |
| } else { |
| addLoadEvent(function() { |
| scrollIntoView("packages-nav"); |
| scrollIntoView("classes-nav"); |
| }); |
| } |
| $("#swapper").css({borderBottom:"2px solid #aaa"}); |
| } else { |
| swapNav(); // tree view should be used on mobile |
| } |
| </script> |
| |
| |
| |
| <div class="g-unit" id="doc-content"> |
| |
| <div id="api-info-block"> |
| |
| |
| |
| |
| <div class="sum-details-links"> |
| |
| |
| </div><!-- end sum-details-links --> |
| <div class="api-level"> |
| |
| |
| |
| |
| |
| |
| </div> |
| </div><!-- end api-info-block --> |
| |
| |
| <!-- ======== START OF CLASS DATA ======== --> |
| |
| <div id="jd-header"> |
| public |
| |
| |
| |
| interface |
| <h1>Mediator</h1> |
| |
| |
| |
| |
| |
| |
| |
| |
| </div><!-- end header --> |
| |
| <div id="naMessage"></div> |
| |
| <div id="jd-content" class="api apilevel-"> |
| <table class="jd-inheritance-table"> |
| |
| |
| <tr> |
| |
| <td colspan="1" class="jd-inheritance-class-cell">org.eclipse.sisu.Mediator<Q extends <a href="http://docs.oracle.com/javase/6/docs/api/index.html?java/lang/annotation/Annotation.html">java.lang.annotation.Annotation</a>, T, W></td> |
| </tr> |
| |
| |
| </table> |
| |
| |
| |
| |
| |
| |
| |
| <div class="jd-descr"> |
| |
| |
| <h2>Class Overview</h2> |
| <p>Watches for Qualified bean implementations of T:<br> |
| <br> |
| |
| <pre> |
| // add @Named for automatic registration |
| public class MyMediator |
| implements Mediator<Named, MyType, MyWatcher> |
| { |
| public void add( BeanEntry<Named, MyType> entry, MyWatcher watcher ) |
| throws Exception |
| { |
| // translate event to whatever the watcher expects |
| } |
| |
| public void remove( BeanEntry<Named, MyType> entry, MyWatcher watcher ) |
| throws Exception |
| { |
| // translate event to whatever the watcher expects |
| } |
| } |
| </pre> |
| |
| Mediator implementations must have a public no-arg constructor; they are neither injected nor injectable, acting |
| instead as stateless translators. |
| <p> |
| <p> |
| IMPORTANT: mediation occurs when bindings change and there is at least <b>one</b> live watcher. If no-one requests or |
| injects an instance of the watcher type then the mediator will <b>not</b> be called. |
| <p> |
| <p> |
| In the following example as soon as MyTabbedPane is injected, Sisu will use the SwingTabMediator to deliver all known |
| JPanels annotated with @Tab to the watching MyTabbedPane. Sisu will continue to send updates, which add or remove |
| tabs as appropriate, until the MyTabbedPane instance becomes unreachable. MyTabbedPane doesn't need to know anything |
| about Sisu APIs and vice-versa because SwingTabMediator takes care of the necessary translation. |
| |
| <pre> |
| @Named |
| public class MyTabbedPane |
| extends JTabbedPane |
| { |
| // watcher |
| } |
| |
| @Qualifier |
| @Retention( RetentionPolicy.RUNTIME ) |
| public @interface Tab |
| { |
| String title(); |
| } |
| |
| @Tab( title = "Summary" ) |
| public class SummaryTab |
| extends JPanel |
| { |
| // qualified bean |
| } |
| |
| @Tab( title = "Notes" ) |
| public class NotesTab |
| extends JPanel |
| { |
| // qualified bean |
| } |
| |
| @Named |
| public class SwingTabMediator |
| implements Mediator<Tab, JPanel, MyTabbedPane> |
| { |
| public void add( BeanEntry<Tab, JPanel> entry, final MyTabbedPane watcher ) |
| throws Exception |
| { |
| final Tab tab = entry.getKey(); |
| final JPanel panel = entry.getValue(); |
| |
| SwingUtilities.invokeLater( new Runnable() |
| { |
| public void run() |
| { |
| watcher.addTab( tab.title(), panel ); |
| } |
| } ); |
| } |
| |
| public void remove( BeanEntry<Tab, JPanel> entry, final MyTabbedPane watcher ) |
| throws Exception |
| { |
| final Tab tab = entry.getKey(); |
| |
| SwingUtilities.invokeLater( new Runnable() |
| { |
| public void run() |
| { |
| watcher.removeTabAt( watcher.indexOfTab( tab.title() ) ); |
| } |
| } ); |
| } |
| } |
| </pre></p> |
| |
| |
| |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">See Also</h5> |
| <ul class="nolist"><li><code><a href="../../../org/eclipse/sisu/inject/BeanLocator.html">BeanLocator</a></code></li> |
| </ul> |
| </div> |
| |
| |
| </div><!-- jd-descr --> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <div class="jd-descr"> |
| |
| |
| <h2>Summary</h2> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <!-- ========== METHOD SUMMARY =========== --> |
| <table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr> |
| |
| |
| |
| |
| <tr class="alt-color api apilevel-" > |
| <td class="jd-typecol"> |
| abstract |
| |
| |
| |
| |
| void |
| </td> |
| <td class="jd-linkcol" width="100%"> |
| <span class="sympad"><a href="../../../org/eclipse/sisu/Mediator.html#add(org.eclipse.sisu.BeanEntry<Q, T>, W)">add</a></span>(<a href="../../../org/eclipse/sisu/BeanEntry.html">BeanEntry</a><Q, T> entry, W watcher) |
| |
| <div class="jd-descrdiv">Processes the added <code><a href="../../../org/eclipse/sisu/BeanEntry.html">BeanEntry</a></code> and sends the necessary updates to the watcher.</div> |
| |
| </td></tr> |
| |
| |
| |
| <tr class=" api apilevel-" > |
| <td class="jd-typecol"> |
| abstract |
| |
| |
| |
| |
| void |
| </td> |
| <td class="jd-linkcol" width="100%"> |
| <span class="sympad"><a href="../../../org/eclipse/sisu/Mediator.html#remove(org.eclipse.sisu.BeanEntry<Q, T>, W)">remove</a></span>(<a href="../../../org/eclipse/sisu/BeanEntry.html">BeanEntry</a><Q, T> entry, W watcher) |
| |
| <div class="jd-descrdiv">Processes the removed <code><a href="../../../org/eclipse/sisu/BeanEntry.html">BeanEntry</a></code> and sends the necessary updates to the watcher.</div> |
| |
| </td></tr> |
| |
| |
| |
| </table> |
| |
| |
| |
| |
| |
| |
| |
| </div><!-- jd-descr (summary) --> |
| |
| <!-- Details --> |
| |
| |
| |
| |
| |
| |
| |
| |
| <!-- XML Attributes --> |
| |
| |
| <!-- Enum Values --> |
| |
| |
| <!-- Constants --> |
| |
| |
| <!-- Fields --> |
| |
| |
| <!-- Public ctors --> |
| |
| |
| |
| <!-- ========= CONSTRUCTOR DETAIL ======== --> |
| <!-- Protected ctors --> |
| |
| |
| |
| <!-- ========= METHOD DETAIL ======== --> |
| <!-- Public methdos --> |
| |
| <h2>Public Methods</h2> |
| |
| |
| |
| <a id="add(org.eclipse.sisu.BeanEntry<Q, T>, W)"></a> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| |
| |
| abstract |
| |
| void |
| </span> |
| <span class="sympad">add</span> |
| <span class="normal">(<a href="../../../org/eclipse/sisu/BeanEntry.html">BeanEntry</a><Q, T> entry, W watcher)</span> |
| </h4> |
| <div class="api-level"> |
| <div> |
| |
| </div> |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Processes the added <code><a href="../../../org/eclipse/sisu/BeanEntry.html">BeanEntry</a></code> and sends the necessary updates to the watcher.</p></div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Parameters</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th>entry</th> |
| <td>The added bean entry</td> |
| </tr> |
| <tr> |
| <th>watcher</th> |
| <td>The watching object |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Throws</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th><a href="http://docs.oracle.com/javase/6/docs/api/index.html?java/lang/Exception.html">Exception</a></td> |
| <td></td> |
| </tr> |
| </table> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| <a id="remove(org.eclipse.sisu.BeanEntry<Q, T>, W)"></a> |
| |
| <div class="jd-details api apilevel-"> |
| <h4 class="jd-details-title"> |
| <span class="normal"> |
| public |
| |
| |
| abstract |
| |
| void |
| </span> |
| <span class="sympad">remove</span> |
| <span class="normal">(<a href="../../../org/eclipse/sisu/BeanEntry.html">BeanEntry</a><Q, T> entry, W watcher)</span> |
| </h4> |
| <div class="api-level"> |
| <div> |
| |
| </div> |
| |
| |
| |
| </div> |
| <div class="jd-details-descr"> |
| |
| <div class="jd-tagdata jd-tagdescr"><p>Processes the removed <code><a href="../../../org/eclipse/sisu/BeanEntry.html">BeanEntry</a></code> and sends the necessary updates to the watcher.</p></div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Parameters</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th>entry</th> |
| <td>The removed bean entry</td> |
| </tr> |
| <tr> |
| <th>watcher</th> |
| <td>The watching object |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="jd-tagdata"> |
| <h5 class="jd-tagtitle">Throws</h5> |
| <table class="jd-tagtable"> |
| <tr> |
| <th><a href="http://docs.oracle.com/javase/6/docs/api/index.html?java/lang/Exception.html">Exception</a></td> |
| <td></td> |
| </tr> |
| </table> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| |
| |
| |
| <!-- ========= METHOD DETAIL ======== --> |
| |
| |
| |
| <!-- ========= END OF CLASS DATA ========= --> |
| <a id="navbar_top"></a> |
| |
| <div id="footer"> |
| Generated by <a href="http://code.google.com/p/doclava/">Doclava</a>. |
| </div> <!-- end footer --> |
| |
| </div> <!-- jd-content --> |
| |
| </div><!-- end doc-content --> |
| |
| </div> <!-- end body-content --> |
| |
| <script type="text/javascript"> |
| init(); /* initialize doclava-developer-docs.js */ |
| </script> |
| |
| </body> |
| </html> |