📄 javaviewer.java
字号:
/******************************************************************************* * Copyright (c) 2000, 2004 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/package org.eclipse.swt.examples.javaviewer;import org.eclipse.swt.*;import org.eclipse.swt.custom.*;import org.eclipse.swt.events.*;import org.eclipse.swt.graphics.*;import org.eclipse.swt.layout.*;import org.eclipse.swt.widgets.*;import java.util.*;import java.io.*;import java.text.*;/** */public class JavaViewer { Shell shell; StyledText text; JavaLineStyler lineStyler = new JavaLineStyler(); FileDialog fileDialog; static ResourceBundle resources = ResourceBundle.getBundle("examples_javaviewer");Menu createFileMenu() { Menu bar = shell.getMenuBar (); Menu menu = new Menu (bar); MenuItem item; // Open item = new MenuItem (menu, SWT.CASCADE); item.setText (resources.getString("Open_menuitem")); item.setAccelerator(SWT.MOD1 + 'O'); item.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { openFile(); } }); // Exit item = new MenuItem (menu, SWT.PUSH); item.setText (resources.getString("Exit_menuitem")); item.addSelectionListener (new SelectionAdapter () { public void widgetSelected (SelectionEvent e) { menuFileExit (); } }); return menu;}void createMenuBar () { Menu bar = new Menu (shell, SWT.BAR); shell.setMenuBar (bar); MenuItem fileItem = new MenuItem (bar, SWT.CASCADE); fileItem.setText (resources.getString("File_menuitem")); fileItem.setMenu (createFileMenu ());}void createShell (Display display) { shell = new Shell (display); shell.setText (resources.getString("Window_title")); GridLayout layout = new GridLayout(); layout.numColumns = 1; shell.setLayout(layout); shell.addShellListener (new ShellAdapter () { public void shellClosed (ShellEvent e) { lineStyler.disposeColors(); text.removeLineStyleListener(lineStyler); } });}void createStyledText() { text = new StyledText (shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); GridData spec = new GridData(); spec.horizontalAlignment = GridData.FILL; spec.grabExcessHorizontalSpace = true; spec.verticalAlignment = GridData.FILL; spec.grabExcessVerticalSpace = true; text.setLayoutData(spec); text.addLineStyleListener(lineStyler); text.setEditable(false); Color bg = Display.getDefault().getSystemColor(SWT.COLOR_GRAY); text.setBackground(bg);}void displayError(String msg) { MessageBox box = new MessageBox(shell, SWT.ICON_ERROR); box.setMessage(msg); box.open();}public static void main (String [] args) { Display display = new Display(); JavaViewer example = new JavaViewer (); Shell shell = example.open (display); while (!shell.isDisposed ()) if (!display.readAndDispatch ()) display.sleep (); display.dispose ();}public Shell open (Display display) { createShell (display); createMenuBar (); createStyledText (); shell.setSize(500, 400); shell.open (); return shell;}void openFile() { if (fileDialog == null) { fileDialog = new FileDialog(shell, SWT.OPEN); } fileDialog.setFilterExtensions(new String[] {"*.java", "*.*"}); String name = fileDialog.open(); open(name);}void open(String name) { final String textString; if ((name == null) || (name.length() == 0)) return; File file = new File(name); if (!file.exists()) { String message = MessageFormat.format(resources.getString("Err_file_no_exist"), new String[] {file.getName()}); displayError(message); return; } try { FileInputStream stream= new FileInputStream(file.getPath()); try { Reader in = new BufferedReader(new InputStreamReader(stream)); char[] readBuffer= new char[2048]; StringBuffer buffer= new StringBuffer((int) file.length()); int n; while ((n = in.read(readBuffer)) > 0) { buffer.append(readBuffer, 0, n); } textString = buffer.toString(); stream.close(); } catch (IOException e) { // Err_file_io String message = MessageFormat.format(resources.getString("Err_file_io"), new String[] {file.getName()}); displayError(message); return; } } catch (FileNotFoundException e) { String message = MessageFormat.format(resources.getString("Err_not_found"), new String[] {file.getName()}); displayError(message); return; } // Guard against superfluous mouse move events -- defer action until later Display display = text.getDisplay(); display.asyncExec(new Runnable() { public void run() { text.setText(textString); } }); // parse the block comments up front since block comments can go across // lines - inefficient way of doing this lineStyler.parseBlockComments(textString);}void menuFileExit () { shell.close ();}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -