📄 mynewsmain.java
字号:
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 + -