Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

DialogModule.java 9.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. /*
  2. * Copyright (c) 2006-2014 DMDirc Developers
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy
  5. * of this software and associated documentation files (the "Software"), to deal
  6. * in the Software without restriction, including without limitation the rights
  7. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. * copies of the Software, and to permit persons to whom the Software is
  9. * furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in
  12. * all copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  20. * SOFTWARE.
  21. */
  22. package com.dmdirc.addons.ui_swing.injection;
  23. import com.dmdirc.Channel;
  24. import com.dmdirc.ClientModule.UserConfig;
  25. import com.dmdirc.DMDircMBassador;
  26. import com.dmdirc.actions.wrappers.PerformWrapper;
  27. import com.dmdirc.addons.ui_swing.MainFrame;
  28. import com.dmdirc.addons.ui_swing.PrefsComponentFactory;
  29. import com.dmdirc.addons.ui_swing.SwingWindowFactory;
  30. import com.dmdirc.addons.ui_swing.dialogs.about.AboutDialog;
  31. import com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsManagerDialog;
  32. import com.dmdirc.addons.ui_swing.dialogs.aliases.AliasManagerDialog;
  33. import com.dmdirc.addons.ui_swing.dialogs.channellist.ChannelListDialog;
  34. import com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog;
  35. import com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog;
  36. import com.dmdirc.addons.ui_swing.dialogs.feedback.FeedbackDialog;
  37. import com.dmdirc.addons.ui_swing.dialogs.newserver.NewServerDialog;
  38. import com.dmdirc.addons.ui_swing.dialogs.prefs.SwingPreferencesDialog;
  39. import com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileManagerDialog;
  40. import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
  41. import com.dmdirc.addons.ui_swing.dialogs.updater.SwingRestartDialog;
  42. import com.dmdirc.addons.ui_swing.dialogs.updater.SwingUpdaterDialog;
  43. import com.dmdirc.config.prefs.PreferencesManager;
  44. import com.dmdirc.interfaces.CommandController;
  45. import com.dmdirc.interfaces.Connection;
  46. import com.dmdirc.interfaces.LifecycleController;
  47. import com.dmdirc.interfaces.config.ConfigProvider;
  48. import com.dmdirc.interfaces.config.IdentityFactory;
  49. import com.dmdirc.interfaces.ui.AliasDialogModel;
  50. import com.dmdirc.interfaces.ui.FeedbackDialogModel;
  51. import com.dmdirc.interfaces.ui.NewServerDialogModel;
  52. import com.dmdirc.plugins.ServiceManager;
  53. import com.dmdirc.ui.core.aliases.CoreAliasDialogModel;
  54. import com.dmdirc.ui.core.feedback.CoreFeedbackDialogModel;
  55. import com.dmdirc.ui.core.newserver.CoreNewServerDialogModel;
  56. import com.dmdirc.ui.messages.ColourManagerFactory;
  57. import java.awt.Window;
  58. import java.awt.datatransfer.Clipboard;
  59. import javax.inject.Provider;
  60. import javax.inject.Qualifier;
  61. import javax.inject.Singleton;
  62. import dagger.Module;
  63. import dagger.Provides;
  64. /**
  65. * Facilitates injection of dialogs.
  66. */
  67. @Module(library = true, complete = false)
  68. public class DialogModule {
  69. /**
  70. * Qualifier that indicates a restart dialog is needed for updates to be applied.
  71. */
  72. @Qualifier
  73. public static @interface ForUpdates {
  74. }
  75. /**
  76. * Qualifier that indicates a restart dialog is needed for settings to be applied.
  77. */
  78. @Qualifier
  79. public static @interface ForSettings {
  80. }
  81. @Provides
  82. public AliasDialogModel getAliasDialogModel(final CoreAliasDialogModel model) {
  83. return model;
  84. }
  85. @Provides
  86. public NewServerDialogModel getNewServerDialogModel(final CoreNewServerDialogModel model) {
  87. return model;
  88. }
  89. @Provides
  90. public FeedbackDialogModel getFeedbackDialogModel(final CoreFeedbackDialogModel model) {
  91. return model;
  92. }
  93. @Provides
  94. @Singleton
  95. public DialogProvider<NewServerDialog> getNewServerDialogProvider(
  96. final Provider<NewServerDialog> provider) {
  97. return new DialogProvider<>(provider);
  98. }
  99. @Provides
  100. @Singleton
  101. public DialogProvider<ProfileManagerDialog> getProfileManagerDialogProvider(
  102. final Provider<ProfileManagerDialog> provider) {
  103. return new DialogProvider<>(provider);
  104. }
  105. @Provides
  106. @Singleton
  107. public DialogProvider<ActionsManagerDialog> getActionsManagerDialogProvider(
  108. final Provider<ActionsManagerDialog> provider) {
  109. return new DialogProvider<>(provider);
  110. }
  111. @Provides
  112. @Singleton
  113. public DialogProvider<AliasManagerDialog> getAliasManagerDialogProvider(
  114. final Provider<AliasManagerDialog> provider) {
  115. return new DialogProvider<>(provider);
  116. }
  117. @Provides
  118. @Singleton
  119. public DialogProvider<ErrorListDialog> getErrorListDialogProvider(
  120. final Provider<ErrorListDialog> provider) {
  121. return new DialogProvider<>(provider);
  122. }
  123. @Provides
  124. @Singleton
  125. public DialogProvider<FeedbackDialog> getFeedbackDialogProvider(
  126. final Provider<FeedbackDialog> provider) {
  127. return new DialogProvider<>(provider);
  128. }
  129. @Provides
  130. @Singleton
  131. public DialogProvider<AboutDialog> getAboutDialogProvider(
  132. final Provider<AboutDialog> provider) {
  133. return new DialogProvider<>(provider);
  134. }
  135. @Provides
  136. @Singleton
  137. public KeyedDialogProvider<Connection, ServerSettingsDialog> getServerSettingsDialogProvider(
  138. final PreferencesManager preferencesManager,
  139. final PrefsComponentFactory compFactory,
  140. final PerformWrapper performWrapper,
  141. @MainWindow final Window parentWindow,
  142. final ColourManagerFactory colourManagerFactory) {
  143. return new KeyedDialogProvider<Connection, ServerSettingsDialog>() {
  144. @Override
  145. protected ServerSettingsDialog getInstance(final Connection key) {
  146. return new ServerSettingsDialog(preferencesManager, compFactory, performWrapper,
  147. key, parentWindow, colourManagerFactory);
  148. }
  149. };
  150. }
  151. @Provides
  152. @Singleton
  153. public KeyedDialogProvider<Channel, ChannelSettingsDialog> getChannelSettingsDialogProvider(
  154. final IdentityFactory identityFactory,
  155. final SwingWindowFactory windowFactory,
  156. @UserConfig final ConfigProvider userConfig,
  157. final ServiceManager serviceManager,
  158. final PreferencesManager preferencesManager,
  159. final PrefsComponentFactory compFactory,
  160. @MainWindow final Window parentWindow,
  161. final Clipboard clipboard,
  162. final CommandController commandController,
  163. final DMDircMBassador eventBus,
  164. final ColourManagerFactory colourManagerFactory) {
  165. return new KeyedDialogProvider<Channel, ChannelSettingsDialog>() {
  166. @Override
  167. protected ChannelSettingsDialog getInstance(final Channel key) {
  168. return new ChannelSettingsDialog(identityFactory, windowFactory,
  169. userConfig, serviceManager, preferencesManager, compFactory, key,
  170. parentWindow, clipboard, commandController, eventBus, colourManagerFactory);
  171. }
  172. };
  173. }
  174. @Provides
  175. @Singleton
  176. public DialogProvider<SwingPreferencesDialog> getSwingPreferencesDialogProvider(
  177. final Provider<SwingPreferencesDialog> provider) {
  178. return new DialogProvider<>(provider);
  179. }
  180. @Provides
  181. @Singleton
  182. public DialogProvider<SwingUpdaterDialog> getSwingUpdaterDialogProvider(
  183. final Provider<SwingUpdaterDialog> provider) {
  184. return new DialogProvider<>(provider);
  185. }
  186. @Provides
  187. @Singleton
  188. @ForUpdates
  189. public DialogProvider<SwingRestartDialog> getSwingRestartDialogProviderForUpdates(
  190. @ForUpdates final Provider<SwingRestartDialog> provider) {
  191. return new DialogProvider<>(provider);
  192. }
  193. @Provides
  194. @Singleton
  195. @ForSettings
  196. public DialogProvider<SwingRestartDialog> getSwingRestartDialogProviderForSettings(
  197. @ForSettings final Provider<SwingRestartDialog> provider) {
  198. return new DialogProvider<>(provider);
  199. }
  200. @Provides
  201. @ForUpdates
  202. public SwingRestartDialog getRestartDialogForUpdates(
  203. final MainFrame mainFrame,
  204. final LifecycleController lifecycleController) {
  205. return new SwingRestartDialog(mainFrame, lifecycleController, "finish updating");
  206. }
  207. @Provides
  208. @ForSettings
  209. public SwingRestartDialog getRestartDialogForSettings(
  210. final MainFrame mainFrame,
  211. final LifecycleController lifecycleController) {
  212. return new SwingRestartDialog(mainFrame, lifecycleController, "apply settings");
  213. }
  214. @Provides
  215. @Singleton
  216. public DialogProvider<ChannelListDialog> getChannelListDialogProvider(
  217. final Provider<ChannelListDialog> provider) {
  218. return new DialogProvider<>(provider);
  219. }
  220. }