EditStationUI.java
上传用户:liming6160
上传日期:2022-06-07
资源大小:785k
文件大小:8k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  *    Copyright (C) 2001 - 2007 Mobicom-Kavkaz, Inc
  3.  *    MFRadio - stream radio client for Java 2 Micro Edition
  4.  *    
  5.  *    Visit the project page at: http://mfradio.sourceforge.net
  6.  *
  7.  *    This program is free software; you can redistribute it and/or modify
  8.  *    it under the terms of the GNU General Public License as published by
  9.  *    the Free Software Foundation; either version 2 of the License, or
  10.  *    (at your option) any later version.
  11.  *
  12.  *    This program is distributed in the hope that it will be useful,
  13.  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  *    GNU General Public License for more details.
  16.  *
  17.  *    You should have received a copy of the GNU General Public License
  18.  *    along with this program; if not, write to the Free Software
  19.  *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  *
  21.  *    Java (TM) and all Java (TM)-based marks are a trademark or 
  22.  *    registered trademark of Sun Microsystems, Inc, in the United States 
  23.  *    and other countries.
  24.  */
  25. package ru.mobicomk.mfradio.ui;
  26. import javax.microedition.lcdui.Command;
  27. import javax.microedition.lcdui.CommandListener;
  28. import javax.microedition.lcdui.Displayable;
  29. import javax.microedition.lcdui.Form;
  30. import javax.microedition.lcdui.Item;
  31. import javax.microedition.lcdui.ItemCommandListener;
  32. import javax.microedition.lcdui.StringItem;
  33. import javax.microedition.lcdui.TextField;
  34. import ru.mobicomk.mfradio.Constants;
  35. import ru.mobicomk.mfradio.controller.UIController;
  36. import ru.mobicomk.mfradio.util.Locale;
  37. import ru.mobicomk.mfradio.util.StationInfo;
  38. /**
  39.  * Edit station information form class. Used also for new station 
  40.  * information input.
  41.  *
  42.  * @author  Roman Bondarenko
  43.  */
  44. public class EditStationUI 
  45.     extends Form
  46.     implements CommandListener, ItemCommandListener {
  47.     
  48.     private static final int UNDEFINED_MODE = 0;
  49.     private static final int ADD_MODE = 1;
  50.     private static final int EDIT_MODE = 2;
  51.     
  52.     // Controller
  53.     private UIController controller_;
  54.     private int mode_;
  55.         
  56.     // Commands
  57.     private Command okCommand_;
  58.     private Command cancelCommand_;
  59.     private Command helpCommand_;
  60.     private Command toOnline_;    
  61.     // UI Items
  62.     private TextField titleField_;
  63.     private TextField urlField_;
  64.     private StringItem repoLink_;
  65.     private int repoLinkIdx_;
  66.     
  67.     // Constructor /////////////////////////////////////////////////////////////
  68.     
  69.     /**
  70.      * Create new edit station information form.
  71.      * @param controller Application controller object.
  72.      */
  73.     public EditStationUI(UIController controller) {
  74.         super("");
  75.         
  76.         controller_ = controller;
  77.         mode_ = UNDEFINED_MODE;
  78.         repoLinkIdx_ = -1;
  79.         
  80.         initCommands();
  81.         initUI();
  82.     }
  83.     
  84.     /**
  85.      * Second level initialization. Used before show this form for setting up 
  86.      * station information to edit.
  87.      * @param si Station information object. If it is <b>null</b>, then form 
  88.      * interacts as <i>New station</i> form, <i>Edit station</i> othrwise.
  89.      */
  90.     public void init(StationInfo si) {
  91. Locale locale = controller_.getLocale();
  92.         if (si == null) {
  93.             mode_ = ADD_MODE;
  94.             setTitle(locale.getString(Constants.STR_Add_Station));
  95.             titleField_.setString("");
  96.             urlField_.setString("");
  97.             setOnlineRepository();
  98.         } else {
  99.             mode_ = EDIT_MODE;
  100.             setTitle(locale.getString(Constants.STR_Edit_Station));
  101.             titleField_.setString(si.Title);
  102.             urlField_.setString(si.Url);
  103.             unsetOnlineRepository();
  104.         }
  105.     }
  106.     
  107.     // ItemCommandListener interface ///////////////////////////////////////////
  108.     
  109.     /** 
  110.      * ItemCommandListener interface implementation.
  111.      * @see javax.microedition.lcdui.ItemCommandListener 
  112.      */
  113.     public void commandAction(Command command, Item item) {
  114.         if ((item == getRepositoryLink()) && (command == toOnline_)) {
  115.             controller_.repositoryRequested();
  116.         }
  117.     }
  118.     
  119.     // CommandListener interface ///////////////////////////////////////////////
  120.     
  121.     /** 
  122.      * CommandListener interface implementation.
  123.      * @see javax.microedition.lcdui.CommandListener 
  124.      */
  125.     public void commandAction(Command command, Displayable displayable) {
  126.         if (mode_ == EDIT_MODE) {
  127.             editMode_commandAction(command, displayable);
  128.         } else if (mode_ == ADD_MODE) {
  129.             addMode_commandAction(command, displayable);
  130.         }
  131.     }
  132.     
  133.     private void editMode_commandAction(Command command, Displayable displayable) {
  134. final Locale locale = controller_.getLocale();
  135.         if (command == okCommand_) {
  136.             // check for empty fields
  137.             if (urlField_.getString().length() == 0) {
  138.                 controller_.showWarning(locale.getString(Constants.STR_Fill_URL_field), this);
  139.             } else if (titleField_.getString().length() == 0) {
  140.                 controller_.showWarning(locale.getString(Constants.STR_Fill_TITLE_field), this);
  141.             } else {
  142.                 controller_.setStation(controller_.getSelectedStationIdx()
  143.                     , new StationInfo(urlField_.getString(), titleField_.getString()));
  144.                 controller_.endEditStationRequested();
  145.             }
  146.         } else if (command == cancelCommand_) {
  147.             controller_.endEditStationRequested();
  148.         } else if (command == helpCommand_) {
  149.             controller_.showHelp(HelpUI.HELP_EDITSTATIONUI_TOPIC); // TODO: remove HelpUI import
  150.         }
  151.     }
  152.   
  153.     private void addMode_commandAction(Command command, Displayable displayable) {
  154. final Locale locale = controller_.getLocale();
  155.         if (command == okCommand_) {
  156.             if (urlField_.getString().length() == 0) {
  157.                 controller_.showWarning(locale.getString(Constants.STR_Fill_URL_field), this);
  158.             } else if (titleField_.getString().length() == 0) {
  159.                 controller_.showWarning(locale.getString(Constants.STR_Fill_TITLE_field), this);
  160.             } else {
  161.                 controller_.addStation(new StationInfo(urlField_.getString(), titleField_.getString()));
  162.                 controller_.endAddStationRequested();
  163.             }
  164.         } else if (command == cancelCommand_) {
  165.             controller_.endAddStationRequested();
  166.         } else if (command == helpCommand_) {
  167.             controller_.showHelp(HelpUI.HELP_ADDSTATIONUI_TOPIC);  // TODO: remove HelpUI import
  168.         }
  169.     }
  170.     // Privates ////////////////////////////////////////////////////////////////
  171.     
  172.     private void initUI() {
  173. final Locale locale = controller_.getLocale();
  174.         // Title
  175.         titleField_ = new TextField(locale.getString(Constants.STR_Title), "", 120, TextField.ANY);
  176.         append(titleField_);
  177.         
  178.         // Link
  179.         urlField_ = new TextField(locale.getString(Constants.STR_Link), "", 120, TextField.URL);
  180.         append(urlField_);
  181.     }
  182.     private void initCommands() {
  183. final Locale locale = controller_.getLocale();
  184.         // to online
  185.         toOnline_ = new Command(locale.getString(Constants.STR_Goto_online), Command.ITEM, 1);
  186.         
  187.         // OK
  188.         okCommand_ = new Command(locale.getString(Constants.STR_OK), Command.OK, 1);
  189.         addCommand(okCommand_);
  190.         // Cancel
  191.         cancelCommand_ = new Command(locale.getString(Constants.STR_Cancel), Command.CANCEL, 2);
  192.         addCommand(cancelCommand_);
  193.         
  194.         // Help
  195.         helpCommand_ = new Command(locale.getString(Constants.STR_Help), Command.SCREEN, 2);
  196.         addCommand(helpCommand_);
  197.         
  198.         setCommandListener(this);        
  199.     }
  200.     private void setOnlineRepository() {
  201.         if (repoLinkIdx_ == -1) {
  202.             repoLinkIdx_ = append(getRepositoryLink());
  203.         }
  204.     }
  205.     
  206.     private void unsetOnlineRepository() {
  207.         if (repoLinkIdx_ != -1) {
  208.             delete(repoLinkIdx_);
  209.             repoLinkIdx_ = -1;
  210.         }
  211.     }
  212.     private StringItem getRepositoryLink() {
  213.         if (repoLink_ == null) {
  214.             repoLink_ = new StringItem("", controller_.getLocale().getString(Constants.STR_Online_repository), Item.HYPERLINK);
  215.             repoLink_.setDefaultCommand(toOnline_);
  216.             repoLink_.setItemCommandListener(this);
  217.         }
  218.         return repoLink_;
  219.     }
  220.     
  221. }