⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mynewsmain.java

📁 RSS一般理解为Rich Site Summary的所写
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package mynews;
import java.awt.Toolkit;
import java.io.BufferedReader;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.jface.dialogs.MessageDialog;

import mynews.AddFeedDialog;
import mynews.AddGroupDialog;
import mynews.RenameDialog;
import mynews.AboutDialog;
import mynews.ImportFeedDialog;

import org.jdom.input.SAXBuilder;
import com.swtdesigner.SWTResourceManager;
import org.jdom.*;

import java.util.Iterator;
import java.util.List;

public class MyNewsMain {

	private Text text;
	private Tree tree_1;
	protected Shell shell;
	private String itemTemplate = null;
	private String skinTemplate = null;
	private String curSkin = null;
	private String curHtml = null;

	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			MyNewsMain window = new MyNewsMain();
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Open the window
	 */
	public void open() {
		final Display display = Display.getDefault();
		createContents();
		shell.open();
		shell.layout();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
	}

	
	public String getFileContents(String filePath)
	{
		String lineRead, ret = new String();
		try {
			BufferedReader buf = new BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(filePath), "UTF-8"));
			while ((lineRead = buf.readLine()) != null){
				ret += lineRead + "\n";
			}
			buf.close();
		} catch (Exception e){
			MessageDialog.openError(shell, "Error", "File Error occurs when reading file '" + filePath + "'.(see below:), will exit now...\n\n" + e.getMessage());
			shell.close();
		}
		return ret;
		//
	}
	
	public void changeSkin()
	{
		
	}
	
	/**
	 * save configs to config.xml
	 */
	public void saveChanges()
	{
		String cfg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<config>\n\t<skins default=\"" + curSkin + "\">\n";
		String walker;
		for (MenuItem mi : (java.util.Vector<MenuItem>)shell.getData("skinItems")){
			cfg += "\t\t<item name=\"" + mi.getText() + "\" icon=\"" + mi.getData("icon") + "\"/>\n";
		}
		cfg += "\t</skins>\n\t<feeds>\n";
		for (TreeItem ti : (java.util.Vector<TreeItem>)shell.getData("feedItems")){
			cfg += "\t\t<item rss=\"" + ti.getData("rss") + "\" title=\"" + ti.getData("title") + "\" url=\"" + 
					ti.getData("url") + "\" group=\"" + ti.getData("group") + "\"/>\n";
		}
		cfg += "\t</feeds>\n\t<groups>\n";
		for (TreeItem ti : (java.util.Vector<TreeItem>)shell.getData("groupItems")){
			cfg += "\t\t<item name=\"" + ti.getData("name") + "\"/>\n";
		}
		cfg += "\t</groups>\n</config>";
		//all done, then write it!
		java.io.OutputStreamWriter out;
		try {
			out = new java.io.OutputStreamWriter(new java.io.FileOutputStream("config.xml"), "UTF-8");
			out.write(cfg);
			out.close();
		} catch (Exception e){
			MessageDialog.openError(shell, "Error", "An error occured when writing config file.(see below:)\n\n" + e.getMessage());
			return;
		}
		MessageDialog.openInformation(shell, "Done", "Well, config file has been updated!");
	}
	
	/**
	 * Create contents of the window
	 */
	protected void createContents() {
		shell = new Shell();
		shell.setImage(SWTResourceManager.getImage(MyNewsMain.class, "/img/Developpers_Icons_097.png"));
		shell.setLayout(new FormLayout());
		shell.setSize(806, 500);
		shell.setMinimumSize(640, 480);
		Toolkit kit = Toolkit.getDefaultToolkit();
		shell.setLocation((kit.getScreenSize().width - 806) / 2, (kit.getScreenSize().height - 500) / 2);
		shell.setText("MyNewsReader");

		Document doc = null;
		try {
			doc = new SAXBuilder().build(new java.io.File("config.xml"));
		} catch (Exception e){
			MessageDialog.openError(shell, "Error", "Config file: 'config.xml' seems got some errors, see below:\n\n" + e.getMessage());
			shell.close();
			return;
		}
		Element feeds = doc.getRootElement().getChild("feeds");
		Element groups = doc.getRootElement().getChild("groups");
		Element skins = doc.getRootElement().getChild("skins");
		curSkin = skins.getAttributeValue("default");
		itemTemplate = getFileContents("skin/" + curSkin + ".item");
		skinTemplate = getFileContents("skin/" + curSkin + ".html");
		final Menu menu = new Menu(shell, SWT.BAR);
		shell.setMenuBar(menu);

		final MenuItem menuItem = new MenuItem(menu, SWT.CASCADE);
		menuItem.setText("Feed");

		final Menu menu_1 = new Menu(menuItem);
		menuItem.setMenu(menu_1);

		final MenuItem menuItem_2 = new MenuItem(menu_1, SWT.NONE);
		menuItem_2.setImage(SWTResourceManager.getImage(MyNewsMain.class, "/img/feed.gif"));
		menuItem_2.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(final SelectionEvent e) {
				AddFeedDialog adf = new AddFeedDialog(shell);
				adf.open();
			}
		});
		menuItem_2.setText("New...");

		final MenuItem menuItem_4 = new MenuItem(menu_1, SWT.NONE);
		menuItem_4.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(final SelectionEvent e) {
				ImportFeedDialog ifd = new ImportFeedDialog(shell);
				ifd.open();
			}
		});
		menuItem_4.setText("Import...");

		final MenuItem menuDelete = new MenuItem(menu_1, SWT.NONE);
		menuDelete.setEnabled(false);
		menuDelete.setText("Delete");

		final MenuItem menuRename = new MenuItem(menu_1, SWT.NONE);
		menuRename.setEnabled(false);
		menuRename.setText("Rename");

		final MenuItem menuProperity = new MenuItem(menu_1, SWT.NONE);
		menuProperity.setEnabled(false);
		menuProperity.setText("Properities...");

		new MenuItem(menu_1, SWT.SEPARATOR);

		final MenuItem newItemMenuItem = new MenuItem(menu_1, SWT.NONE);
		newItemMenuItem.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(final SelectionEvent e) {
				saveChanges();
			}
		});
		newItemMenuItem.setText("Save config");

		new MenuItem(menu_1, SWT.SEPARATOR);

		final MenuItem menuItem_6 = new MenuItem(menu_1, SWT.NONE);
		menuItem_6.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(final SelectionEvent e) {
				if (MessageDialog.openQuestion(shell, "Exit", "Are you sure you want to exit?"))
					shell.close();
			}
		});
		menuItem_6.setText("Exit");

		final MenuItem menuItem_1 = new MenuItem(menu, SWT.CASCADE);
		menuItem_1.setText("Group");

		final Menu menu_2 = new Menu(menuItem_1);
		menuItem_1.setMenu(menu_2);

		final MenuItem menuItem_9 = new MenuItem(menu_2, SWT.NONE);
		menuItem_9.setImage(SWTResourceManager.getImage(MyNewsMain.class, "/img/gif_57_030.gif"));
		menuItem_9.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(final SelectionEvent e) {
				AddGroupDialog agd = new AddGroupDialog(shell);
				agd.open();
			}
		});
		menuItem_9.setText("New...");

		final MenuItem menuItem_10 = new MenuItem(menu_2, SWT.NONE);
		menuItem_10.setEnabled(false);
		menuItem_10.setText("Delete");

		final MenuItem menuItem_11 = new MenuItem(menu_2, SWT.NONE);
		menuItem_11.setEnabled(false);
		menuItem_11.setText("Rename");

		final MenuItem menuItem_13 = new MenuItem(menu_2, SWT.NONE);
		menuItem_13.setEnabled(false);
		menuItem_13.setText("Properites...");

		final MenuItem newSubmenuMenuItem = new MenuItem(menu, SWT.CASCADE);
		newSubmenuMenuItem.setText("Skin");

		final Menu menu_3 = new Menu(newSubmenuMenuItem);
		newSubmenuMenuItem.setMenu(menu_3);
		
		java.util.Vector<MenuItem> skinItems = new java.util.Vector<MenuItem>();
		for(Object obj : skins.getChildren()){
			Element el = (Element)obj;
			MenuItem newMenu = new MenuItem(menu_3, SWT.NONE);
			newMenu.setText(el.getAttributeValue("name"));
			newMenu.setData("icon", el.getAttributeValue("icon"));
			newMenu.setImage(SWTResourceManager.getImage(MyNewsMain.class, "/img/" + el.getAttributeValue("icon")));
			skinItems.add(newMenu);
			newMenu.addSelectionListener(new SelectionAdapter() {
				public void widgetSelected(final SelectionEvent e) {
					//curSkin = 
					changeSkin();
				}
			});
		}
		shell.setData("skinItems", skinItems);

		final MenuItem menuItem_3 = new MenuItem(menu, SWT.CASCADE);
		menuItem_3.setText("Help");

		final Menu menu_4 = new Menu(menuItem_3);
		menuItem_3.setMenu(menu_4);

		final MenuItem menuItem_14 = new MenuItem(menu_4, SWT.NONE);
		menuItem_14.setImage(SWTResourceManager.getImage(MyNewsMain.class, "/img/gif_57_025.gif"));
		menuItem_14.setText("User Guide...");

		final MenuItem menuItem_15 = new MenuItem(menu_4, SWT.NONE);
		menuItem_15.setText("About...");

		tree_1 = new Tree(shell, SWT.BORDER);
		final FormData rd_tree = new FormData();
		rd_tree.right = new FormAttachment(0, 175);
		rd_tree.bottom = new FormAttachment(100, -10);
		rd_tree.left = new FormAttachment(0, 10);
		rd_tree.top = new FormAttachment(0, 10);
		tree_1.setLayoutData(rd_tree);
		
		shell.setData("tree", tree_1);
		
		menuDelete.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(final SelectionEvent e) {
				TreeItem tmp = tree_1.getSelection()[0];
				java.util.Vector<TreeItem> itemsArray = (java.util.Vector<TreeItem>)shell.getData("feedItems");
				for (Iterator i = itemsArray.iterator(); i.hasNext(); ){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -