/** * Copyright 2011 multibit.org * * Licensed under the MIT license (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://opensource.org/licenses/mit-license.php * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.multibit.viewsystem.swing.view; import org.multibit.controller.Controller; import org.multibit.controller.bitcoin.BitcoinController; import org.multibit.controller.exchange.ExchangeController; import org.multibit.viewsystem.View; import org.multibit.viewsystem.Viewable; import org.multibit.viewsystem.swing.MultiBitFrame; import org.multibit.viewsystem.swing.view.dialogs.ShowOpenUriDialog; import org.multibit.viewsystem.swing.view.panels.*; import java.util.EnumMap; import java.util.Map; /** * a factory class that lazy loads views * * @author jim */ public class ViewFactory { private Map<View, Viewable> viewMap; private final Controller controller; private final BitcoinController bitcoinController; private final ExchangeController exchangeController; private final MultiBitFrame mainFrame; public ViewFactory(BitcoinController bitcoinController, ExchangeController exchangeController, MultiBitFrame mainFrame) { this.bitcoinController = bitcoinController; this.exchangeController = exchangeController; this.controller = this.bitcoinController; this.mainFrame = mainFrame; initialise(); } public final void initialise() { viewMap = new EnumMap<View, Viewable>(View.class); } public Viewable getView(View viewNumber) { Viewable viewToReturn = viewMap.get(viewNumber); if (viewToReturn == null) { viewToReturn = createView(viewNumber); } return viewToReturn; } public void addView(View viewNumber, Viewable view) { viewMap.put(viewNumber, view); } private Viewable createView(View viewNumber) { Viewable viewToReturn = null; switch (viewNumber) { case SAME_VIEW: { assert false; break; } case WELCOME_VIEW: { viewToReturn = new WelcomePanel(controller, mainFrame); break; } case TRANSACTIONS_VIEW: { viewToReturn = new ShowTransactionsPanel(this.bitcoinController, mainFrame); break; } case HELP_ABOUT_VIEW: { viewToReturn = new HelpAboutPanel(controller, mainFrame); break; } case HELP_CONTENTS_VIEW: { viewToReturn = new HelpContentsPanel(controller, mainFrame); break; } case RECEIVE_BITCOIN_VIEW: { viewToReturn = new ReceiveBitcoinPanel(this.bitcoinController, mainFrame); break; } case SEND_BITCOIN_VIEW: { viewToReturn = new SendBitcoinPanel(this.bitcoinController, mainFrame); break; } case PREFERENCES_VIEW: { viewToReturn = new ShowPreferencesPanel(this.bitcoinController, this.exchangeController, mainFrame); break; } case RESET_TRANSACTIONS_VIEW: { viewToReturn = new ResetTransactionsPanel(this.bitcoinController, mainFrame); break; } case SHOW_OPEN_URI_DIALOG_VIEW: { viewToReturn = new ShowOpenUriDialog(this.bitcoinController, mainFrame); break; } case SIGN_MESSAGE_VIEW: { viewToReturn = new SignMessagePanel(this.bitcoinController, mainFrame); break; } case VERIFY_MESSAGE_VIEW: { viewToReturn = new VerifyMessagePanel(this.bitcoinController, mainFrame); break; } case SHOW_IMPORT_PRIVATE_KEYS_VIEW: { viewToReturn = new ImportPrivateKeysPanel(this.bitcoinController, mainFrame); break; } case SHOW_EXPORT_PRIVATE_KEYS_VIEW: { viewToReturn = new ExportPrivateKeysPanel(this.bitcoinController, mainFrame); break; } case SHOW_CHECK_PRIVATE_KEYS_VIEW: { viewToReturn = new CheckPrivateKeysPanel(this.bitcoinController); break; } case MESSAGES_VIEW: { viewToReturn = new MessagesPanel(controller, mainFrame); break; } case ADD_PASSWORD_VIEW: { viewToReturn = new AddPasswordPanel(this.bitcoinController, mainFrame); break; } case CHANGE_PASSWORD_VIEW: { viewToReturn = new ChangePasswordPanel(this.bitcoinController, mainFrame); break; } case REMOVE_PASSWORD_VIEW: { viewToReturn = new RemovePasswordPanel(this.bitcoinController, mainFrame); break; } case CHARTS_VIEW: { viewToReturn = new ChartsPanel(this.bitcoinController, mainFrame); break; } default: { } } if (viewToReturn != null) { viewMap.put(viewNumber, viewToReturn); } return viewToReturn; } }