Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

DialogModule.java 7.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  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.GlobalConfig;
  25. import com.dmdirc.ClientModule.UserConfig;
  26. import com.dmdirc.Server;
  27. import com.dmdirc.actions.wrappers.PerformWrapper;
  28. import com.dmdirc.addons.ui_swing.MainFrame;
  29. import com.dmdirc.addons.ui_swing.PrefsComponentFactory;
  30. import com.dmdirc.addons.ui_swing.SwingController;
  31. import com.dmdirc.addons.ui_swing.SwingWindowFactory;
  32. import com.dmdirc.addons.ui_swing.dialogs.FeedbackDialog;
  33. import com.dmdirc.addons.ui_swing.dialogs.NewServerDialog;
  34. import com.dmdirc.addons.ui_swing.dialogs.about.AboutDialog;
  35. import com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsManagerDialog;
  36. import com.dmdirc.addons.ui_swing.dialogs.aliases.AliasManagerDialog;
  37. import com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog;
  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.LifecycleController;
  45. import com.dmdirc.interfaces.config.AggregateConfigProvider;
  46. import com.dmdirc.interfaces.config.ConfigProvider;
  47. import com.dmdirc.interfaces.config.IdentityFactory;
  48. import com.dmdirc.plugins.ServiceManager;
  49. import com.dmdirc.ui.IconManager;
  50. import javax.inject.Provider;
  51. import javax.inject.Qualifier;
  52. import javax.inject.Singleton;
  53. import dagger.Module;
  54. import dagger.Provides;
  55. /**
  56. * Facilitates injection of dialogs.
  57. */
  58. @Module(library = true, complete = false)
  59. public class DialogModule {
  60. /**
  61. * Qualifier that indicates a restart dialog is needed for updates to be applied.
  62. */
  63. @Qualifier
  64. public static @interface ForUpdates {
  65. }
  66. /**
  67. * Qualifier that indicates a restart dialog is needed for settings to be applied.
  68. */
  69. @Qualifier
  70. public static @interface ForSettings {
  71. }
  72. @Provides
  73. @Singleton
  74. public DialogProvider<NewServerDialog> getNewServerDialogProvider(
  75. final Provider<NewServerDialog> provider) {
  76. return new DialogProvider<>(provider);
  77. }
  78. @Provides
  79. @Singleton
  80. public DialogProvider<ProfileManagerDialog> getProfileManagerDialogProvider(
  81. final Provider<ProfileManagerDialog> provider) {
  82. return new DialogProvider<>(provider);
  83. }
  84. @Provides
  85. @Singleton
  86. public DialogProvider<ActionsManagerDialog> getActionsManagerDialogProvider(
  87. final Provider<ActionsManagerDialog> provider) {
  88. return new DialogProvider<>(provider);
  89. }
  90. @Provides
  91. @Singleton
  92. public DialogProvider<AliasManagerDialog> getAliasManagerDialogProvider(
  93. final Provider<AliasManagerDialog> provider) {
  94. return new DialogProvider<>(provider);
  95. }
  96. @Provides
  97. @Singleton
  98. public DialogProvider<FeedbackDialog> getFeedbackDialogProvider(
  99. final Provider<FeedbackDialog> provider) {
  100. return new DialogProvider<>(provider);
  101. }
  102. @Provides
  103. @Singleton
  104. public DialogProvider<AboutDialog> getAboutDialogProvider(
  105. final Provider<AboutDialog> provider) {
  106. return new DialogProvider<>(provider);
  107. }
  108. @Provides
  109. @Singleton
  110. public KeyedDialogProvider<Server, ServerSettingsDialog> getServerSettingsDialogProvider(
  111. final SwingController controller,
  112. @GlobalConfig final IconManager iconManager,
  113. final PrefsComponentFactory compFactory,
  114. final PerformWrapper performWrapper,
  115. final MainFrame parentWindow) {
  116. return new KeyedDialogProvider<Server, ServerSettingsDialog>() {
  117. @Override
  118. protected ServerSettingsDialog getInstance(final Server key) {
  119. return new ServerSettingsDialog(controller, iconManager, compFactory,
  120. performWrapper, key, parentWindow);
  121. }
  122. };
  123. }
  124. @Provides
  125. @Singleton
  126. public KeyedDialogProvider<Channel, ChannelSettingsDialog> getChannelSettingsDialogProvider(
  127. final SwingController controller,
  128. final IdentityFactory identityFactory,
  129. final SwingWindowFactory windowFactory,
  130. @GlobalConfig final IconManager iconManager,
  131. @GlobalConfig final AggregateConfigProvider globalConfig,
  132. @UserConfig final ConfigProvider userConfig,
  133. final ServiceManager serviceManager,
  134. final PreferencesManager preferencesManager,
  135. final PrefsComponentFactory compFactory,
  136. final MainFrame parentWindow) {
  137. return new KeyedDialogProvider<Channel, ChannelSettingsDialog>() {
  138. @Override
  139. protected ChannelSettingsDialog getInstance(final Channel key) {
  140. return new ChannelSettingsDialog(controller, identityFactory, windowFactory,
  141. iconManager, globalConfig, userConfig, serviceManager, preferencesManager,
  142. compFactory, key, parentWindow);
  143. }
  144. };
  145. }
  146. @Provides
  147. @Singleton
  148. public DialogProvider<SwingPreferencesDialog> getSwingPreferencesDialogProvider(
  149. final Provider<SwingPreferencesDialog> provider) {
  150. return new DialogProvider<>(provider);
  151. }
  152. @Provides
  153. @Singleton
  154. public DialogProvider<SwingUpdaterDialog> getSwingUpdaterDialogProvider(
  155. final Provider<SwingUpdaterDialog> provider) {
  156. return new DialogProvider<>(provider);
  157. }
  158. @Provides
  159. @Singleton
  160. @ForUpdates
  161. public DialogProvider<SwingRestartDialog> getSwingRestartDialogProviderForUpdates(
  162. @ForUpdates final Provider<SwingRestartDialog> provider) {
  163. return new DialogProvider<>(provider);
  164. }
  165. @Provides
  166. @Singleton
  167. @ForSettings
  168. public DialogProvider<SwingRestartDialog> getSwingRestartDialogProviderForSettings(
  169. @ForSettings final Provider<SwingRestartDialog> provider) {
  170. return new DialogProvider<>(provider);
  171. }
  172. @Provides
  173. @ForUpdates
  174. public SwingRestartDialog getRestartDialogForUpdates(
  175. final MainFrame mainFrame,
  176. final LifecycleController lifecycleController) {
  177. return new SwingRestartDialog(mainFrame, lifecycleController, "finish updating");
  178. }
  179. @Provides
  180. @ForSettings
  181. public SwingRestartDialog getRestartDialogForSettings(
  182. final MainFrame mainFrame,
  183. final LifecycleController lifecycleController) {
  184. return new SwingRestartDialog(mainFrame, lifecycleController, "apply settings");
  185. }
  186. }