亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rssfeedopen.java

?? wap瀏覽器 日程安排 Rss 棋牌游戲
?? JAVA
字號:
/**
//文檔生成日期:2005.10.07
//
//(1)概述:
//類名稱:RssFeedOpen
//類說明:
//??	 “讀取Rss Feed新聞”的Form界面
* 
//所在子系統:RssOwlMIDlet
//
//系統總描述:
	    我們提供的RSS無線閱讀器J2ME版本[開源]是一個可以下載到手機(例如Nokia7610)或者其他無線手持設備(例如PocketPC)的應用程序,用來閱讀存在于Internet中廣泛的RSS新聞源。

	 子系統描述:
		RSS無線閱讀器的功能列表:
	RSS Feed列表
		添加Rss Feed
		編輯Rss Feed
		刪除Rss Feed
	讀取Rss Feed新聞
		查看新聞摘要
		重新讀取Rss Feed新聞
	關于我


//(2)歷史記錄:
//創建人: 鄭昀(2005.10.07)
//聯系我: Google Talk >> zhengyun@gmail.com
//Blogs:    http://blog.csdn.net/zhengyun_ustc/以及http://www.cnblogs.com/zhengyun_ustc

//(3)版權聲明:
//由于我這個版本的RSS J2ME閱讀器也是基于Tommi和garrey源代碼基礎上改編而來的,
//所以決定遵照GPL協議的大意開放源代碼,您可以自由傳播和修改,在遵照GPL協議的約束條件的前提下。

//(4)相關資源:
1:《[J2ME]RSSOwlMidlet(RSS無線閱讀器)開源說明》
2:《[J2ME]RSSOwlMidlet(RSS無線閱讀器)設計說明》
3:下載源代碼:

////////////////////////////////////////////////////////////////////*/
package com.ultrapower.view;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.TextField;

import com.ultrapower.control.GUIController;
import com.ultrapower.model.RssFeed;
import com.ultrapower.model.RssFeedParser;
import com.ultrapower.model.RssItem;
import com.ultrapower.tools.SResources;

/**********************************************************
//RssFeedOpen
//
//Class Description:
//	顯示當前選中的Rss Feed的新聞列表,以新聞條目主題列表方式顯示。提供菜單命令有:
*   讀取新聞
*   添加書簽
*   編輯書簽
*   刪除書簽
*   關于我
//
//Author:
//zhengyun@ultrapower 2005.10.07
//
**********************************************************/
public class RssFeedOpen extends Form
						implements Runnable{
    private GUIController 	 controller;
	private Display     	 m_display;          // The display for this MIDlet
	private Command     	 m_openHeaderCmd;    // The open header command
    private Command    	 m_backHeaderCmd;    // The back to bookmark list command
    private Command    	 m_updateCmd;        // The update headers command
	private TextField 		 errorTextField;
	
	private boolean     	 m_getPage;          // The noticy flag for HTTP
	private List        	 m_headerList;       // The header list
	private RssFeedParser   m_curRssParser; 	 // The currently selected RSS
	
	private Thread     	 m_netThread;        // The thread for networking
	private static Image 	 m_iconOpen = SResources.getImage(
			SResources.IMG_UNREADFEED);
	private static Image   m_iconError = SResources.getImage(
			SResources.IMG_ERROR);
	private int			 m_nErrorTextFieldId;
	private int			 m_nErrorImageFieldId;
	private WaitFlash 		 m_WaitFlash;
    
	
	/**********************************************************
	//	 RssFeedOpen::RssFeedOpen
	//
	//	 Description:
	//	  初始化界面:
	 * 		初始化菜單命令;
	 * 		初始化新聞條目列表;
	 * 		本Form其實也是一個Thread,我們為了讓后臺來獲取并解析RSS XML,所以啟動線程
	 * 		加載圖像
	//
	//	 Parameters:
	//	 Return Values:
	//   Remark:
	 * 
	//	 Author:
	//	      zhengyun@ultrapower 2005.10.07
	//
	**********************************************************/
	public RssFeedOpen(String title, GUIController control){
		super(title);
    	controller = control;
		m_nErrorTextFieldId = -1;
		m_nErrorImageFieldId = -1;
		m_display = controller.rssMidlet.getCurrentDisplay();
		
		m_openHeaderCmd     = new Command(SResources.MENU_COMMAND_VIEWDETAIL, Command.SCREEN, 1);
        m_backHeaderCmd     = new Command(SResources.MENU_COMMAND_BACKCMD, Command.BACK,1);
        m_updateCmd         = new Command(SResources.MENU_COMMAND_UPDATENEWS, Command.SCREEN, 2);
		initializeHeadersList();
		
    	this.setCommandListener(new RssFeedOpenListener());
		
		/** Initialize thread for http connection operations */
        m_netThread = new Thread(this);
        m_netThread.start();
	}


	/**********************************************************
	//	 RssFeedOpen::updateHeaders
	//
	//	 Description:
	//	  更新新聞條目列表:
	 * 		先將當前新聞列表全部刪除
	 * 		再告訴后臺線程,可以去讀取并解析RSS Feed了
	//
	//	 Parameters:
	//	 Return Values:
	//   Remark:
	 * 
	//	 Author:
	//	      zhengyun@ultrapower 2005.10.07
	//
	**********************************************************/
    public void updateHeaders() {
		System.out.println("/** updateHeaders */");
		
		// 將當前新聞列表全部刪除
		deleteAll();
		if(m_WaitFlash == null)
		{
			// 當前沒有等候動畫時,我們需要創建一個
			m_WaitFlash = new WaitFlash();
			m_WaitFlash.setMessage("正在讀取新聞列表,請稍等...");
			m_display.setCurrent(m_WaitFlash);			
		}
		else
		{
			m_display.setCurrent(m_WaitFlash);
		}
		System.out.println("設置了等待畫面!");
        if(m_curRssParser.getRssFeed().getUrl().length()>0) {
            m_getPage = true;
        }
    }
	
	/**********************************************************
	//	 RssFeedOpen::deleteAll
	//
	//	 Description:
	//	  將當前新聞列表全部刪除
	//
	//	 Parameters:
	//	 Return Values:
	//   Remark:
	 * 由于MIDP 2.0中才定義了List的deleteAll()方法,
	 * 但是MIDP1.0中List支持delete(int itemNum).
	 * 所以在MIDP1.0中,可以使用List的size()得到當前List中的Item的數量,
	 * 然后使用for循環delete(int itemNum),這樣在MIDP1.0中實現deleteAll的功能。
	 * 但這么for循環刪除有一個非常奇怪的地方,好像是隔一個刪一個,導致無法刪除干凈?!
	 * 所以最后不得不采用while循環刪除第一個元素的辦法!這也許是一個MIDP1.0的bug。
	//	 Author:
	//	      zhengyun@ultrapower 2005.10.07
	//
	**********************************************************/
//	private synchronized void deleteAll()
//	{
//		System.out.println("!-- RssFeedOpen::Enter deleteAll --!");
//		
//		// 下面的刪除代碼只能隔一個刪一個m_headerList的元素,導致無法刪除干凈
//		/*for(int i = 0;i < m_headerList.size();i++){
//			
//			m_headerList.delete(i);
//			System.out.println("delete>>" + i);
//		}*/
//		
//		// 這樣才能完全刪除:
//		while(m_headerList.size()>0)
//            m_headerList.delete(0);
//	}
	
	/**********************************************************
	//	 RssFeedOpen::appendRssItem
	//
	//	 Description:
	//	  向List中添加Rss Item
	//
	//	 Parameters:
	//	 Return Values:
	//   Remark:
	 * 
	//	 Author:
	//	      zhengyun@ultrapower 2005.10.07
	//
	**********************************************************/
	public void appendRssItem(String title)
	{
		setCurrentDispalyToHeaderList();
		int nId = m_headerList.append(title, m_iconOpen);
		System.out.println("/** appendRssItem:append item id=" + nId);
	}
	
	/**********************************************************
	//	 RssFeedOpen::setRss
	//
	//	 Description:
	//	  設置當前需要去讀取哪一個Rss Feed
	//
	//	 Parameters:
	 * 		feed: 輸入feed
	//	 Return Values:
	//   Remark:
	 * 
	//	 Author:
	//	      zhengyun@ultrapower 2005.10.07
	//
	**********************************************************/
	public void setRss(RssFeed feed){
		m_curRssParser = new RssFeedParser( feed , controller);
		
		m_curRssParser.openForm = this;
		
        if( m_curRssParser.getRssFeed().getItems().size() == 0 ) {
			
            /** Update RSS feed headers only if this is a first time */
            updateHeaders();
        } else {
			System.out.println("/** fillHeadersList */");
            /**
             * Show currently selected RSS feed
             * headers without updating them
             */
            fillHeadersList();
        }
	}
	
	/**********************************************************
	//	 RssFeedOpen::fillHeadersList
	//
	//	 Description:
	//	  根據當前Rss Feed對應的類實體中存儲的Rss Item列表,重新填充界面上的List
	//
	//	 Parameters:
	//	 Return Values:
	//   Remark:
	 * 
	//	 Author:
	//	      zhengyun@ultrapower 2005.10.07
	//
	**********************************************************/
    private void fillHeadersList() {
		System.out.println("/** Enter fillHeadersList */");
		deleteAll();
		
		RssFeed feed = m_curRssParser.getRssFeed();
		System.out.println("重新采用RssFeed:" + feed.getName());
        for(int i = 0; i < m_curRssParser.getRssFeed().getItems().size(); i++){
           
            RssItem r = (RssItem)feed.getItems().elementAt(i);
            m_headerList.append( r.getTitle(), m_iconOpen );
        }
		// 一定要在重置了新聞列表后,把m_headerList設置為焦點,否則屏幕上會沒有效果!
		setCurrentDispalyToHeaderList();
    }
	
	/**********************************************************
	//	 RssFeedOpen::initializeHeadersList
	//
	//	 Description:
	//	  Initialize RSS headers list
	//
	//	 Parameters:
	//	 Return Values:
	//   Remark:
	 * 
	//	 Author:
	//	      zhengyun@ultrapower 2005.10.07
	//
	**********************************************************/
    private void initializeHeadersList() {
		System.out.println("/** Enter initializeHeadersList */");
        m_headerList = new List(SResources.FORM_TITLE_READRSSFEED, List.IMPLICIT);
        m_headerList.addCommand(m_openHeaderCmd);
        m_headerList.addCommand(m_backHeaderCmd);
        m_headerList.addCommand(m_updateCmd);
        m_headerList.setCommandListener(new RssFeedOpenListener());
    }
	
	/**********************************************************
	//	 RssFeedOpen::run
	//
	//	 Description:
	//	  Run method is used to get RSS feed with HttpConnection
	//
	//	 Parameters:
	//	 Return Values:
	//   Remark:
	 * 
	//	 Author:
	//	      zhengyun@ultrapower 2005.10.07
	//
	**********************************************************/
    public void run(){
        /* Use networking if necessary */
        long lngStart;
        long lngTimeTaken;
        while(true) {
            try {
				//  我們是依靠m_getPage來判斷是否去得到并解析Rss XML的.
				//  如果當前m_getPage是false,那么本線程就只能先睡眠一段時間了.
                if( m_getPage ) {
                    try {
						if(m_nErrorTextFieldId > 0)
						{
							this.delete(m_nErrorTextFieldId);
						}
						if(m_nErrorImageFieldId > 0)
						{
							this.delete(m_nErrorImageFieldId);
						}
                        /** Get RSS feed */
						System.out.println("/** m_curRssParser.parseRssFeed(); */");
                        if(m_curRssParser.parseRssFeed())
							setCurrentDispalyToHeaderList();
                        else
						{
							this.addCommand(m_backHeaderCmd);
							
							m_WaitFlash = null;
						}
                    }catch(Exception e) {
                        /** Error while parsing RSS feed */
                        System.out.println("Error: " + e.getMessage());
						
						errorTextField = 
							new TextField("RSS提示信息 : ",
									"\n無法解析Rss Feed:\n" + 
	                                m_curRssParser.getRssFeed().getUrl(),
	                                64, TextField.ANY);
						this.addCommand(m_backHeaderCmd);
						
						// 在添加元素到界面上時,必須記下插入的id,這樣下次解析RssFeed
						// 時就可以先行刪除這些元素了,不至于造成重復插入
						m_nErrorImageFieldId = this.append(m_iconError);
						m_nErrorTextFieldId = this.append(errorTextField);
						m_display.setCurrent(this);
						m_WaitFlash = null;
						
                    }
                    m_getPage = false;
                }
                lngStart = System.currentTimeMillis();
                lngTimeTaken = System.currentTimeMillis() - lngStart;
                if(lngTimeTaken < 100)
                    m_netThread.sleep(75 - lngTimeTaken);
            } catch (InterruptedException e) {
                break;
            }
        }
    }
	
	/**********************************************************
	//	 RssFeedOpen::setCurrentDispalyToHeaderList
	//
	//	 Description:
	//	  設置畫面到Header List
	//
	//	 Parameters:
	//	 Return Values:
	//   Remark:
	 * 
	//	 Author:
	//	      zhengyun@ultrapower 2005.10.07
	//
	**********************************************************/
	public void setCurrentDispalyToHeaderList()
	{
		System.out.println("設置畫面到Header List!");
		m_display.setCurrent(m_headerList);
		if(m_WaitFlash != null)
		{
			// 銷毀等候動畫Form
			m_WaitFlash = null;
		}
	}

	/*
     * 內部監聽器,監聽器監聽所有Command事件,并把事件響應推出來讓控制器處理
     */
    private class RssFeedOpenListener implements CommandListener{ 
    	public void commandAction(Command command, Displayable disp){
			if(command == m_backHeaderCmd){
				System.out.println("Back Menu!");
				controller.handleEvent(GUIController.EventID.EVENT_VIEW_BACK,null);
	        }
			else if(command == m_openHeaderCmd || (command == List.SELECT_COMMAND &&
	                m_display.getCurrent() == m_headerList)){
	            int ind = ((List)disp).getSelectedIndex();
	            if(ind == -1)
	                return;
				Object[] args = {m_curRssParser.getRssFeed().getItems().elementAt(ind)};    		
				controller.handleEvent(GUIController.EventID.EVENT_VIEW_RSS_ITEM,args);
			}
			else if(command == m_updateCmd){
	            int ind = ((List)disp).getSelectedIndex();
	            if(ind == -1)
	                return;
				Object[] args={m_curRssParser.getRssFeed().getItems().elementAt(ind)};    		
				controller.handleEvent(GUIController.EventID.EVENT_UPDATE_RSS_ITEMS,args);
			}
    	}
    }//end inner class
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品国产欧美| 成人免费高清在线观看| 欧美视频在线一区| 亚洲丶国产丶欧美一区二区三区| 色婷婷综合久色| 一区二区高清在线| 欧美伦理电影网| 美国欧美日韩国产在线播放| 337p粉嫩大胆噜噜噜噜噜91av| 国产麻豆视频一区| 亚洲欧洲av色图| 欧美日韩国产三级| 经典一区二区三区| 国产精品美女久久久久aⅴ | 久久精品男人天堂av| 国产麻豆视频一区| 亚洲私人影院在线观看| 欧美麻豆精品久久久久久| 九九视频精品免费| 中文字幕亚洲视频| 欧美日韩国产精品自在自线| 精品一区二区三区蜜桃| 国产精品伦理一区二区| 欧美日韩一本到| 国产精品影视网| 亚洲自拍偷拍网站| 国产亚洲一区二区三区四区 | 欧美自拍丝袜亚洲| 麻豆成人av在线| 亚洲色图清纯唯美| 欧美大片一区二区三区| 色狠狠一区二区三区香蕉| 琪琪久久久久日韩精品| 国产精品美女久久久久久2018| 欧美日本精品一区二区三区| 国内国产精品久久| 亚洲一区二区3| 国产日韩精品一区| 欧美一区二视频| 91国产福利在线| 国产夫妻精品视频| 亚洲码国产岛国毛片在线| 精品第一国产综合精品aⅴ| 91在线国产福利| 国产一区二区三区日韩| 日韩精品国产欧美| 亚洲愉拍自拍另类高清精品| 国产女人aaa级久久久级 | 日韩一二三四区| 972aa.com艺术欧美| 国产美女主播视频一区| 午夜精品福利在线| 日韩伦理av电影| 欧美激情一区二区在线| 精品国产在天天线2019| 欧美一区二区在线播放| 色综合天天综合给合国产| 粉嫩在线一区二区三区视频| 蜜桃视频免费观看一区| 日韩高清不卡在线| 亚洲成人综合在线| 亚洲一卡二卡三卡四卡| 亚洲免费av高清| 亚洲女性喷水在线观看一区| 日本一区二区动态图| wwww国产精品欧美| 日韩精品在线一区二区| 日韩视频在线永久播放| 欧美一区二区三区免费大片| 欧美日韩一区二区不卡| 欧美私人免费视频| 在线国产电影不卡| 91久久精品一区二区三区| 色又黄又爽网站www久久| 99久久久久免费精品国产| 91在线国内视频| 色屁屁一区二区| 一本久久a久久免费精品不卡| 91在线云播放| 色哟哟一区二区| 在线一区二区三区| 欧美中文字幕一区二区三区| 欧美无砖砖区免费| 久久亚洲一区二区三区四区| 在线播放国产精品二区一二区四区| 日韩精品中文字幕在线一区| 成人综合婷婷国产精品久久| 国产又黄又大久久| 国产成人精品免费一区二区| 成人精品视频一区二区三区尤物| 国产成人午夜精品5599| 国产成人小视频| 欧美女孩性生活视频| 欧美日韩一区二区在线观看| 欧美一区二区三区视频在线| 精品久久一二三区| 国产人成一区二区三区影院| 中文子幕无线码一区tr | 亚洲色图制服丝袜| 亚洲国产欧美在线| 日本午夜精品一区二区三区电影| 久久黄色级2电影| 国产一区二区三区日韩| 色综合天天综合网天天看片| 在线观看91精品国产入口| 91精品国产91久久综合桃花 | 中文字幕色av一区二区三区| 亚洲乱码国产乱码精品精98午夜| 日韩精品视频网站| 国产麻豆午夜三级精品| 91国产丝袜在线播放| 欧美一区二区三区啪啪| 国产精品久线在线观看| 亚洲大片精品永久免费| 国产精品一二三四| 在线观看91视频| 国产亚洲一二三区| 亚洲午夜久久久久| 国产精品99久久久久久有的能看| 一本大道久久a久久精二百| 日韩一区和二区| 亚洲私人影院在线观看| 另类人妖一区二区av| 99精品在线免费| 日韩精品专区在线影院观看| 亚洲女人****多毛耸耸8| 美女视频黄频大全不卡视频在线播放| 成人性生交大片免费看中文| 欧美日韩二区三区| 中文字幕免费不卡在线| 美腿丝袜亚洲三区| 色偷偷88欧美精品久久久| 久久久久久久精| 视频一区二区不卡| 9l国产精品久久久久麻豆| 日韩免费在线观看| 亚洲444eee在线观看| www.欧美日韩国产在线| 久久久国产一区二区三区四区小说| 亚洲自拍偷拍九九九| 成人av手机在线观看| 欧美xfplay| 日韩 欧美一区二区三区| 色婷婷久久久综合中文字幕 | 狠狠色综合色综合网络| 欧美日韩亚洲丝袜制服| 亚洲欧美日韩综合aⅴ视频| 国产成人丝袜美腿| 精品嫩草影院久久| 亚洲不卡一区二区三区| 在线观看一区二区精品视频| 国产精品麻豆网站| 国产高清不卡二三区| 日韩精品一区二| 久久精品国产亚洲a| 欧美女孩性生活视频| 亚洲国产精品久久不卡毛片 | 国产91精品精华液一区二区三区| 日韩午夜在线影院| 美国三级日本三级久久99| 欧美精品丝袜久久久中文字幕| 亚洲一区二区四区蜜桃| 91麻豆蜜桃一区二区三区| 国产精品三级av在线播放| 国产精品自拍av| 久久久久久电影| 粉嫩高潮美女一区二区三区| 久久色.com| 国产激情一区二区三区桃花岛亚洲| 精品欧美一区二区在线观看| 麻豆久久久久久久| 日韩精品中午字幕| 国内不卡的二区三区中文字幕| 日韩美女天天操| 国内精品第一页| 国产精品乱人伦| 99re热视频精品| 一区二区三区久久| 欧美日韩成人一区| 毛片av一区二区三区| 久久蜜桃av一区精品变态类天堂| 国产一区日韩二区欧美三区| 中文一区二区在线观看| 国产999精品久久| 亚洲色图都市小说| 在线观看一区日韩| 蜜臀va亚洲va欧美va天堂| 久久亚洲精品国产精品紫薇| 国产成人av自拍| 亚洲婷婷国产精品电影人久久| 91麻豆福利精品推荐| 性久久久久久久久久久久| 日韩欧美国产电影| 国产成人av影院| 亚洲最新视频在线观看| 欧美一级xxx| 盗摄精品av一区二区三区| 一区二区三区日韩欧美精品| 欧美浪妇xxxx高跟鞋交| 国产精品一区三区|