/* Copyright (c) 2001-2005 Todd C. Stellanova, rawthought * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. * * * This software was originally modified no later than Sept 25, 2007. */ // Expand to define MIDP define //#define DMIDP20 // Expand to define DJSR75 define //#define DNOJSR75 // Expand to define logging define //#define DNOLOGGING //#ifdef DJSR75 package org.kablog.kgui; import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; import com.substanceofcode.rssreader.presentation.RssReaderMIDlet; //#ifdef DLOGGING import net.sf.jlogmicro.util.logging.Logger; import net.sf.jlogmicro.util.logging.LogManager; import net.sf.jlogmicro.util.logging.Level; import net.sf.jlogmicro.util.logging.FormHandler; import net.sf.jlogmicro.util.logging.RecStoreHandler; //#endif /** * * @author Todd C. Stellanova */ public class KFileSelectorMgr implements KViewParent { protected RssReaderMIDlet midlet; protected Form txtFrm; protected TextField txtFld; protected KFileSelector fileSelectorView; protected KViewParent viewParent; protected boolean ready = false; protected boolean bDebug; //#ifdef DLOGGING private Logger logger = Logger.getLogger("KFileSelectorMgr"); private boolean fineLoggable = logger.isLoggable(Level.FINE); private boolean finerLoggable = logger.isLoggable(Level.FINER); private boolean finestLoggable = logger.isLoggable(Level.FINEST); //#endif /** * When the we're is done capturing an XML or multi-media, it calls this method. */ final public void childFinished(KViewChild child) { try { if (fileSelectorView.getSelectedURL() != null) { txtFld.setString(fileSelectorView.getSelectedURL()); } fileSelectorView.doCleanup(); fileSelectorView = null; //#ifdef DMIDP20 midlet.setCurrentItem( txtFld ); //#else midlet.setCurrent( txtFrm ); //#endif } catch (Throwable t) { //#ifdef DLOGGING logger.severe("Sort dates error.", t); //#endif System.out.println("Sort dates error." + t + " " + t.getMessage()); t.printStackTrace(); } } /* Start the file selector list. */ final public void doLaunchSelector(RssReaderMIDlet midlet, Form txtFrm, TextField txtFld) { System.out.println("doLaunchSelector..."); this.midlet = midlet; this.txtFrm = txtFrm; this.txtFld = txtFld; fileSelectorView = null; try { fileSelectorView = KFileSelectorFactory.getInstance( midlet, "Find import file", null, "/icons" ); fileSelectorView.setViewParent(this); Display.getDisplay(midlet).setCurrent((List)fileSelectorView); } catch (Exception ex) { if (bDebug) System.out.println("### selector fail: " + ex); } }//doLaunchSelector /** We've updated the child's status. */ final public void childStatusChanged(KViewChild child, int statusType, int status) { if (bDebug) System.out.println("Child status changed: " + status); } /** @param newView object o make visible, if possible. */ final public void reqSetVisible(Displayable newView) { if (viewParent != null) { viewParent.reqSetVisible(newView); } else { Display.getDisplay(midlet).setCurrent(newView); } } /** @param The callback client interested in receiving finished status. */ final public void setViewParent(KViewParent parent) { this.viewParent = parent; } /** Display a debug message somehow */ final public void displayDbgMsg(String msg, AlertType type) { if (bDebug) System.out.println("dbgMsg: " + msg); } /* Add a deferred action. This is either passed on to our parent or run as a thread now. */ final public void addDeferredAction(Runnable runny) { if (viewParent != null) { viewParent.addDeferredAction(runny); } else { new Thread(runny).start(); } } } //#endif