diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java')
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java | 614 |
1 files changed, 307 insertions, 307 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java b/bundles/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java index e32c48ca80..90a9502db9 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java @@ -1,256 +1,256 @@ -package org.eclipse.swt.program;
-
-/*
+package org.eclipse.swt.program; + +/* * Copyright (c) 2000, 2002 IBM Corp. All rights reserved. * This file is 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
- */
-
-import org.eclipse.swt.internal.*;
-import org.eclipse.swt.internal.photon.*;
-import org.eclipse.swt.*;
-import org.eclipse.swt.graphics.*;
-
-import java.io.*;
-
-/**
- * Instances of this class represent programs and
- * their assoicated file extensions in the operating
- * system.
+ * http://www.eclipse.org/legal/cpl-v10.html */ -public final class Program {
- String name;
- String extension;
- String command;
-
-/**
- * Prevents uninitialized instances from being created outside the package.
+ +import org.eclipse.swt.internal.*; +import org.eclipse.swt.internal.photon.*; +import org.eclipse.swt.*; +import org.eclipse.swt.graphics.*; + +import java.io.*; + +/** + * Instances of this class represent programs and + * their assoicated file extensions in the operating + * system. + */ +public final class Program { + String name; + String extension; + String command; + +/** + * Prevents uninitialized instances from being created outside the package. */ -Program () {
-}
-
-/**
- * Finds the program that is associated with an extension.
- * The extension may or may not begin with a '.'.
- *
- * @param extension the program extension
- * @return the program or nil
- *
- * @exception SWTError <ul>
- * <li>ERROR_NULL_ARGUMENT when extension is null</li>
- * </ul>
+Program () { +} + +/** + * Finds the program that is associated with an extension. + * The extension may or may not begin with a '.'. + * + * @param extension the program extension + * @return the program or nil + * + * @exception SWTError <ul> + * <li>ERROR_NULL_ARGUMENT when extension is null</li> + * </ul> */ -public static Program findProgram (String extension) {
- if (extension == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- if (extension.length () == 0) return null;
- String[][] table = loadAssociationTable ();
- if (table == null) return null;
- for (int i = 0; i < table.length; i++) {
- String[] entry = table [i];
- if (entry == null) break;
- String [] exts = expandExtensions (entry [0]);
- for (int j = 0; j < exts.length; j++) {
- String ext = exts[j];
- if (ext == null) break;
- if (ext.endsWith (extension)) {
- Program program = new Program ();
- program.extension = ext;
- program.command = entry [1];
- int index;
- String name = entry [1];
- if ((index = name.indexOf(' ')) != -1) {
- name = name.substring (0, index);
- }
- program.name = name;
- return program;
- }
- }
- }
- return null;
-}
-
-/**
- * Answer all program extensions in the operating system.
- *
- * @return an array of extensions
+public static Program findProgram (String extension) { + if (extension == null) SWT.error (SWT.ERROR_NULL_ARGUMENT); + if (extension.length () == 0) return null; + String[][] table = loadAssociationTable (); + if (table == null) return null; + for (int i = 0; i < table.length; i++) { + String[] entry = table [i]; + if (entry == null) break; + String [] exts = expandExtensions (entry [0]); + for (int j = 0; j < exts.length; j++) { + String ext = exts[j]; + if (ext == null) break; + if (ext.endsWith (extension)) { + Program program = new Program (); + program.extension = ext; + program.command = entry [1]; + int index; + String name = entry [1]; + if ((index = name.indexOf(' ')) != -1) { + name = name.substring (0, index); + } + program.name = name; + return program; + } + } + } + return null; +} + +/** + * Answer all program extensions in the operating system. + * + * @return an array of extensions */ -public static String [] getExtensions () {
- String[][] table = loadAssociationTable ();
- if (table == null) return new String [0];
- int count = 0;
- String[] extensions = new String [50];
+public static String [] getExtensions () { + String[][] table = loadAssociationTable (); + if (table == null) return new String [0]; + int count = 0; + String[] extensions = new String [50]; for (int i = 0; i < table.length; i++) { - String[] entry = table [i];
+ String[] entry = table [i]; if (entry == null) break; - String [] exts = expandExtensions (entry [0]);
+ String [] exts = expandExtensions (entry [0]); for (int j = 0; j < exts.length; j++) { String ext = exts[j]; if (ext == null) break; - if (count == extensions.length) {
- String [] newExtensions = new String [count + 50];
- System.arraycopy (extensions, 0, newExtensions, 0, count);
- extensions = newExtensions;
- }
+ if (count == extensions.length) { + String [] newExtensions = new String [count + 50]; + System.arraycopy (extensions, 0, newExtensions, 0, count); + extensions = newExtensions; + } extensions[count++] = ext; - }
- }
- if (count != extensions.length) {
- String [] newExtensions = new String [count];
- System.arraycopy (extensions, 0, newExtensions, 0, count);
- extensions = newExtensions;
- }
- return extensions;
-}
-
-/**
- * Answers all available programs in the operating system.
- *
- * @return an array of programs
+ } + } + if (count != extensions.length) { + String [] newExtensions = new String [count]; + System.arraycopy (extensions, 0, newExtensions, 0, count); + extensions = newExtensions; + } + return extensions; +} + +/** + * Answers all available programs in the operating system. + * + * @return an array of programs */ -public static Program [] getPrograms () {
- String[][] table = loadAssociationTable ();
- if (table == null) return new Program [0];
- int count = 0;
- Program [] programs = new Program [50];
- for (int i = 0; i < table.length; i++) {
- String [] entry = table [i];
- if (entry == null) break;
- String [] extensions = expandExtensions (entry [0]);
+public static Program [] getPrograms () { + String[][] table = loadAssociationTable (); + if (table == null) return new Program [0]; + int count = 0; + Program [] programs = new Program [50]; + for (int i = 0; i < table.length; i++) { + String [] entry = table [i]; + if (entry == null) break; + String [] extensions = expandExtensions (entry [0]); for (int j = 0; j < extensions.length; j++) { - String extension = extensions[j];
- if (extension == null) break;
- Program program = new Program ();
- program.extension = extension;
- program.command = entry [1];
- int index;
- String name = entry [1];
- if ((index = name.indexOf(' ')) != -1) {
- name = name.substring (0, index);
- }
- program.name = name;
- if (count == programs.length) {
- Program [] newPrograms = new Program [count + 50];
- System.arraycopy (programs, 0, newPrograms, 0, count);
- programs = newPrograms;
- }
+ String extension = extensions[j]; + if (extension == null) break; + Program program = new Program (); + program.extension = extension; + program.command = entry [1]; + int index; + String name = entry [1]; + if ((index = name.indexOf(' ')) != -1) { + name = name.substring (0, index); + } + program.name = name; + if (count == programs.length) { + Program [] newPrograms = new Program [count + 50]; + System.arraycopy (programs, 0, newPrograms, 0, count); + programs = newPrograms; + } programs [count++] = program; - }
- }
- if (count != programs.length) {
- Program [] newPrograms = new Program [count];
- System.arraycopy (programs, 0, newPrograms, 0, count);
- programs = newPrograms;
- }
- return programs;
-}
-
-/**
- * Launches the executable associated with the file in
- * the operating system. If the file is an executable,
- * then the executable is launched.
- *
- * @param fileName the file or program name
- * @return <code>true</code> if the file is launched, otherwise <code>false</code>
- *
- * @exception SWTError <ul>
- * <li>ERROR_NULL_ARGUMENT when fileName is null</li>
- * </ul>
+ } + } + if (count != programs.length) { + Program [] newPrograms = new Program [count]; + System.arraycopy (programs, 0, newPrograms, 0, count); + programs = newPrograms; + } + return programs; +} + +/** + * Launches the executable associated with the file in + * the operating system. If the file is an executable, + * then the executable is launched. + * + * @param fileName the file or program name + * @return <code>true</code> if the file is launched, otherwise <code>false</code> + * + * @exception SWTError <ul> + * <li>ERROR_NULL_ARGUMENT when fileName is null</li> + * </ul> */ -public static boolean launch (String fileName) {
- if (fileName == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- int index = fileName.lastIndexOf ('.');
- if (index == -1) return false;
- String extension = fileName.substring (index, fileName.length ());
- Program program = Program.findProgram (extension);
- if (program != null && program.execute (fileName)) return true;
- try {
- Compatibility.exec(fileName);
- return true;
- } catch (IOException e) {
- return false;
- }
-}
-
-static String [] expandExtensions (String ext) {
- int start = 0, index = 0, count = 0, length = ext.length ();
- String[] extensions = new String [5];
- while (index < length) {
- index = ext.indexOf ('|', start);
- if (index == -1) index = length;
- String extension = ext.substring (start, index).trim();
- start = index + 1;
- int bracketStart = extension.indexOf('[');
- if (bracketStart != -1) {
- int bracketEnd = extension.indexOf(']', bracketStart);
- if (bracketEnd != -1) {
- String prefix = extension.substring (0, bracketStart);
- String suffix = extension.substring (bracketEnd + 1, extension.length ());
- String chars = extension.substring (bracketStart + 1, bracketEnd);
- for (int i=0; i<chars.length (); i++) {
- if (count == extensions.length) {
- String [] newExtensions = new String [count + 5];
- System.arraycopy (extensions, 0, newExtensions, 0, count);
- extensions = newExtensions;
- }
- extensions [count++] = prefix + chars.charAt (i) + suffix;
- }
- }
- } else {
- if (count == extensions.length) {
- String [] newExtensions = new String [count + 5];
- System.arraycopy (extensions, 0, newExtensions, 0, count);
- extensions = newExtensions;
- }
- extensions [count++] = extension;
- }
- }
- return extensions;
-}
-
-static String [][] loadAssociationTable () {
- FileInputStream is = null;
- try {
- byte[] buffer = Converter.wcsToMbcs (null, "HOME", true);
- int ptr = OS.getenv (buffer);
- if (ptr == 0) return null;
- int length = OS.strlen (ptr);
- if (length == 0) return null;
- buffer = new byte [length];
- OS.memmove (buffer, ptr, length);
- String home = new String (Converter.mbcsToWcs (null, buffer));
- is = new FileInputStream (home + "/.ph/pfm/associate.003");
- BufferedReader reader = new BufferedReader (new InputStreamReader (is));
- String line;
- int count = 0;
- String [][] table = new String [50][];
- while ((line = reader.readLine ()) != null) {
- if (line.trim().startsWith ("#")) continue;
- int start = 0, tabIndex = line.indexOf ('\t', start);
- if (tabIndex == -1) continue;
- String extension = line.substring (start, tabIndex);
- start = tabIndex + 1;
- tabIndex = line.indexOf ('\t', start);
- if (tabIndex == -1) continue;
- String command = line.substring (start, tabIndex);
- if (count == table.length) {
- String [][] newTable = new String [table.length + 50][];
- System.arraycopy (table, 0, newTable, 0, table.length);
- table = newTable;
- }
- String[] entry = new String [] {extension, command};
- table [count++] = entry;
- }
- return table;
- } catch (IOException e) {
- } finally {
- try {
- if (is != null) is.close();
- } catch (IOException e) {}
- }
- return null;
-}
-
+public static boolean launch (String fileName) { + if (fileName == null) SWT.error (SWT.ERROR_NULL_ARGUMENT); + int index = fileName.lastIndexOf ('.'); + if (index == -1) return false; + String extension = fileName.substring (index, fileName.length ()); + Program program = Program.findProgram (extension); + if (program != null && program.execute (fileName)) return true; + try { + Compatibility.exec(fileName); + return true; + } catch (IOException e) { + return false; + } +} + +static String [] expandExtensions (String ext) { + int start = 0, index = 0, count = 0, length = ext.length (); + String[] extensions = new String [5]; + while (index < length) { + index = ext.indexOf ('|', start); + if (index == -1) index = length; + String extension = ext.substring (start, index).trim(); + start = index + 1; + int bracketStart = extension.indexOf('['); + if (bracketStart != -1) { + int bracketEnd = extension.indexOf(']', bracketStart); + if (bracketEnd != -1) { + String prefix = extension.substring (0, bracketStart); + String suffix = extension.substring (bracketEnd + 1, extension.length ()); + String chars = extension.substring (bracketStart + 1, bracketEnd); + for (int i=0; i<chars.length (); i++) { + if (count == extensions.length) { + String [] newExtensions = new String [count + 5]; + System.arraycopy (extensions, 0, newExtensions, 0, count); + extensions = newExtensions; + } + extensions [count++] = prefix + chars.charAt (i) + suffix; + } + } + } else { + if (count == extensions.length) { + String [] newExtensions = new String [count + 5]; + System.arraycopy (extensions, 0, newExtensions, 0, count); + extensions = newExtensions; + } + extensions [count++] = extension; + } + } + return extensions; +} + +static String [][] loadAssociationTable () { + FileInputStream is = null; + try { + byte[] buffer = Converter.wcsToMbcs (null, "HOME", true); + int ptr = OS.getenv (buffer); + if (ptr == 0) return null; + int length = OS.strlen (ptr); + if (length == 0) return null; + buffer = new byte [length]; + OS.memmove (buffer, ptr, length); + String home = new String (Converter.mbcsToWcs (null, buffer)); + is = new FileInputStream (home + "/.ph/pfm/associate.003"); + BufferedReader reader = new BufferedReader (new InputStreamReader (is)); + String line; + int count = 0; + String [][] table = new String [50][]; + while ((line = reader.readLine ()) != null) { + if (line.trim().startsWith ("#")) continue; + int start = 0, tabIndex = line.indexOf ('\t', start); + if (tabIndex == -1) continue; + String extension = line.substring (start, tabIndex); + start = tabIndex + 1; + tabIndex = line.indexOf ('\t', start); + if (tabIndex == -1) continue; + String command = line.substring (start, tabIndex); + if (count == table.length) { + String [][] newTable = new String [table.length + 50][]; + System.arraycopy (table, 0, newTable, 0, table.length); + table = newTable; + } + String[] entry = new String [] {extension, command}; + table [count++] = entry; + } + return table; + } catch (IOException e) { + } finally { + try { + if (is != null) is.close(); + } catch (IOException e) {} + } + return null; +} + /** * Executes the program with the file as the single argument * in the operating system. It is the responsibility of the @@ -264,82 +264,82 @@ static String [][] loadAssociationTable () { * <li>ERROR_NULL_ARGUMENT when fileName is null</li> * </ul> */ -public boolean execute (String fileName) {
- if (fileName == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- int index = -1;
- String prefix = command, suffix = "", location = "";
- String[] locations = {"file://$PWD/@", "$PWD/@", "@"};
+public boolean execute (String fileName) { + if (fileName == null) SWT.error (SWT.ERROR_NULL_ARGUMENT); + int index = -1; + String prefix = command, suffix = "", location = ""; + String[] locations = {"file://$PWD/@", "$PWD/@", "@"}; for (int i = 0; i < locations.length; i++) { location = locations[i]; - index = command.indexOf (location);
+ index = command.indexOf (location); if (index != -1) break; - }
- if (index != -1) {
- int start = 0;
- prefix = command.substring (start, index);
- start = index + location.length() + 1;
- if (start < command.length ()) {
- suffix = command.substring (start, command.length ());
- }
- }
- try {
- Compatibility.exec(prefix + " " + fileName + " " + suffix);
- } catch (IOException e) {
- return false;
- }
- return true;
-}
-
-/**
- * Returns the receiver's image data. This is the icon
- * that is associated with the reciever in the operating
- * system.
- *
- * @return the image data for the program, may be null
+ } + if (index != -1) { + int start = 0; + prefix = command.substring (start, index); + start = index + location.length() + 1; + if (start < command.length ()) { + suffix = command.substring (start, command.length ()); + } + } + try { + Compatibility.exec(prefix + " " + fileName + " " + suffix); + } catch (IOException e) { + return false; + } + return true; +} + +/** + * Returns the receiver's image data. This is the icon + * that is associated with the reciever in the operating + * system. + * + * @return the image data for the program, may be null */ -public ImageData getImageData () {
- return null;
-}
-
-/**
- * Returns the receiver's name. This is as short and
- * descriptive a name as possible for the program. If
- * the program has no descriptive name, this string may
- * be the executable name, path or empty.
- *
- * @return an the name of the program
+public ImageData getImageData () { + return null; +} + +/** + * Returns the receiver's name. This is as short and + * descriptive a name as possible for the program. If + * the program has no descriptive name, this string may + * be the executable name, path or empty. + * + * @return an the name of the program */ -public String getName () {
- return name;
-}
-
-/**
- * Returns true if the receiver and the argument represent
- * the same program.
- *
- * @return true if the programs are the same
+public String getName () { + return name; +} + +/** + * Returns true if the receiver and the argument represent + * the same program. + * + * @return true if the programs are the same */ -public boolean equals(Object other) {
- if (this == other) return true;
- if (other instanceof Program) {
- final Program program = (Program) other;
- return extension.equals(program.extension) && name.equals(program.name) &&
- command.equals(program.command);
- }
- return false;
-}
-
-/**
- * Returns a hash code suitable for this object.
- *
- * @return a hash code
+public boolean equals(Object other) { + if (this == other) return true; + if (other instanceof Program) { + final Program program = (Program) other; + return extension.equals(program.extension) && name.equals(program.name) && + command.equals(program.command); + } + return false; +} + +/** + * Returns a hash code suitable for this object. + * + * @return a hash code */ -public int hashCode() {
- return extension.hashCode() ^ name.hashCode() ^ command.hashCode();
-}
-
-public String toString () {
- return "Program {" + name + "}";
-}
-
+public int hashCode() { + return extension.hashCode() ^ name.hashCode() ^ command.hashCode(); +} + +public String toString () { + return "Program {" + name + "}"; +} + } |