plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/CoreUtil.java
author Eugene Ostroukhov <eugeneo@symbian.org>
Tue, 31 Aug 2010 11:58:53 -0700
changeset 479 518afa7c6d2f
parent 470 d4809db37847
child 482 2973198ae2a9
permissions -rw-r--r--
Minor refactoring to make API more clear
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
55
bb6160d0b6f2 Added fallback to default browser if platform is Mac or XULRunner is not available
Eugene Ostroukhov <eostroukhov@gmail.com>
parents:
diff changeset
     1
package org.symbian.tools.wrttools.util;
bb6160d0b6f2 Added fallback to default browser if platform is Mac or XULRunner is not available
Eugene Ostroukhov <eostroukhov@gmail.com>
parents:
diff changeset
     2
104
58b323842de3 Bug 1650 - Source not found for preview code while stepping in debugger - was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 98
diff changeset
     3
import java.io.BufferedReader;
58b323842de3 Bug 1650 - Source not found for preview code while stepping in debugger - was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 98
diff changeset
     4
import java.io.IOException;
58b323842de3 Bug 1650 - Source not found for preview code while stepping in debugger - was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 98
diff changeset
     5
import java.io.InputStreamReader;
200
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
     6
import java.io.Reader;
98
b6d252d808df Nokia validation code is now integrated with WTP framework
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 55
diff changeset
     7
import java.text.MessageFormat;
122
8bb5bc59bfcf Bug 1667 (WRT Navigator view oddities) and other bugs were fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 104
diff changeset
     8
import java.util.HashMap;
8bb5bc59bfcf Bug 1667 (WRT Navigator view oddities) and other bugs were fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 104
diff changeset
     9
import java.util.Map;
98
b6d252d808df Nokia validation code is now integrated with WTP framework
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 55
diff changeset
    10
import java.util.regex.Matcher;
b6d252d808df Nokia validation code is now integrated with WTP framework
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 55
diff changeset
    11
import java.util.regex.Pattern;
b6d252d808df Nokia validation code is now integrated with WTP framework
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 55
diff changeset
    12
104
58b323842de3 Bug 1650 - Source not found for preview code while stepping in debugger - was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 98
diff changeset
    13
import org.eclipse.core.resources.IFile;
58b323842de3 Bug 1650 - Source not found for preview code while stepping in debugger - was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 98
diff changeset
    14
import org.eclipse.core.resources.IProject;
58b323842de3 Bug 1650 - Source not found for preview code while stepping in debugger - was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 98
diff changeset
    15
import org.eclipse.core.resources.IResource;
58b323842de3 Bug 1650 - Source not found for preview code while stepping in debugger - was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 98
diff changeset
    16
import org.eclipse.core.runtime.CoreException;
122
8bb5bc59bfcf Bug 1667 (WRT Navigator view oddities) and other bugs were fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 104
diff changeset
    17
import org.eclipse.core.runtime.IStatus;
55
bb6160d0b6f2 Added fallback to default browser if platform is Mac or XULRunner is not available
Eugene Ostroukhov <eostroukhov@gmail.com>
parents:
diff changeset
    18
import org.eclipse.core.runtime.Platform;
122
8bb5bc59bfcf Bug 1667 (WRT Navigator view oddities) and other bugs were fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 104
diff changeset
    19
import org.eclipse.core.runtime.Status;
98
b6d252d808df Nokia validation code is now integrated with WTP framework
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 55
diff changeset
    20
import org.eclipse.jface.text.IRegion;
b6d252d808df Nokia validation code is now integrated with WTP framework
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 55
diff changeset
    21
import org.eclipse.jface.text.Region;
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    22
import org.eclipse.wst.jsdt.core.IJavaScriptProject;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    23
import org.eclipse.wst.jsdt.core.IType;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    24
import org.eclipse.wst.jsdt.core.JavaScriptModelException;
122
8bb5bc59bfcf Bug 1667 (WRT Navigator view oddities) and other bugs were fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 104
diff changeset
    25
import org.symbian.tools.wrttools.Activator;
55
bb6160d0b6f2 Added fallback to default browser if platform is Mac or XULRunner is not available
Eugene Ostroukhov <eostroukhov@gmail.com>
parents:
diff changeset
    26
bb6160d0b6f2 Added fallback to default browser if platform is Mac or XULRunner is not available
Eugene Ostroukhov <eostroukhov@gmail.com>
parents:
diff changeset
    27
public class CoreUtil {
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    28
    public static final String METADATA_FILE = "Info.plist";
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    29
    public static final String PROPERTY_PATTERN = "<key>\\s*{0}\\s*</key>\\s*<string>\\s*(.*)\\s*</string>";
55
bb6160d0b6f2 Added fallback to default browser if platform is Mac or XULRunner is not available
Eugene Ostroukhov <eostroukhov@gmail.com>
parents:
diff changeset
    30
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    31
    public static boolean isWindows() {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    32
        return "windows".equals(Platform.getOS());
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    33
    }
55
bb6160d0b6f2 Added fallback to default browser if platform is Mac or XULRunner is not available
Eugene Ostroukhov <eostroukhov@gmail.com>
parents:
diff changeset
    34
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    35
    public static boolean isMac() {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    36
        return "macosx".equals(Platform.getOS());
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    37
    }
55
bb6160d0b6f2 Added fallback to default browser if platform is Mac or XULRunner is not available
Eugene Ostroukhov <eostroukhov@gmail.com>
parents:
diff changeset
    38
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    39
    public static boolean isLinux() {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    40
        return "linux".equals(Platform.getOS());
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    41
    }
98
b6d252d808df Nokia validation code is now integrated with WTP framework
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 55
diff changeset
    42
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    43
    public static String getIndexFileName(String buffer) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    44
        if (buffer != null) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    45
            Matcher matcher = getPropertyLookupPattern("MainHTML").matcher(buffer);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    46
            if (matcher.find()) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    47
                return matcher.group(1);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    48
            }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    49
        }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    50
        return null;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    51
    }
98
b6d252d808df Nokia validation code is now integrated with WTP framework
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 55
diff changeset
    52
200
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
    53
    public static String getApplicationName(String buffer) {
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
    54
        if (buffer != null) {
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
    55
            Matcher matcher = getPropertyLookupPattern("DisplayName").matcher(buffer);
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
    56
            if (matcher.find()) {
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
    57
                return matcher.group(1);
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
    58
            }
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
    59
        }
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
    60
        return null;
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
    61
    }
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
    62
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    63
    public static Pattern getPropertyLookupPattern(String propertyName) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    64
        return Pattern.compile(MessageFormat.format(PROPERTY_PATTERN, propertyName), Pattern.CASE_INSENSITIVE);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    65
    }
98
b6d252d808df Nokia validation code is now integrated with WTP framework
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 55
diff changeset
    66
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    67
    public static IRegion getIndexFileNameRegion(String string) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    68
        Matcher matcher = getPropertyLookupPattern("MainHTML").matcher(string);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    69
        if (matcher.find()) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    70
            int start = matcher.start(1);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    71
            return new Region(start, matcher.end(1) - start);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    72
        }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    73
        return null;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    74
    }
104
58b323842de3 Bug 1650 - Source not found for preview code while stepping in debugger - was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 98
diff changeset
    75
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    76
    public static IFile getFile(IProject project, String fileName) throws CoreException {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    77
        String n = fileName.toLowerCase();
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    78
        IResource[] members = project.members();
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    79
        for (IResource iResource : members) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    80
            if (iResource.getType() == IResource.FILE && n.equals(iResource.getName().toLowerCase())
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    81
                    && iResource.isAccessible()) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    82
                return (IFile) iResource;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    83
            }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    84
        }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    85
        return null;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    86
    }
104
58b323842de3 Bug 1650 - Source not found for preview code while stepping in debugger - was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 98
diff changeset
    87
468
a05c6e5cc7d9 Previewer now is TMWed (can support projects with different natures). Note: this commit does not compile. This previewer still only supports WRT libraries
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 415
diff changeset
    88
    public static String readFile(IFile file) throws CoreException {
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    89
        try {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    90
            if (file != null && file.isAccessible()) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    91
                final BufferedReader reader = new BufferedReader(new InputStreamReader(file.getContents(),
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    92
                        file.getCharset()));
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    93
                return read(reader);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    94
            }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    95
            return null;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    96
        } catch (IOException e) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    97
            throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, MessageFormat.format(
468
a05c6e5cc7d9 Previewer now is TMWed (can support projects with different natures). Note: this commit does not compile. This previewer still only supports WRT libraries
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 415
diff changeset
    98
                    "Failed to read file {0} in project {1}", file.getName(), file.getProject().getName())));
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
    99
        }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   100
    }
122
8bb5bc59bfcf Bug 1667 (WRT Navigator view oddities) and other bugs were fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 104
diff changeset
   101
200
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
   102
    public static String read(final Reader reader) throws IOException {
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
   103
        StringBuffer buffer = new StringBuffer();
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
   104
        try {
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   105
            int c = 0;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   106
            char[] buf = new char[4096];
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   107
            while ((c = reader.read(buf)) > 0) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   108
                buffer.append(buf, 0, c);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   109
            }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   110
            return buffer.toString();
200
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
   111
        } finally {
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   112
            reader.close();
200
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
   113
        }
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
   114
    }
830136ec8316 Wizard can now import projects of any time (i.e. Dreamweaver, WRT IDE) from the filesystem
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 139
diff changeset
   115
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   116
    private static final Map<IProject, IndexFileRecord> INDEX_FILES = new HashMap<IProject, IndexFileRecord>();
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   117
479
518afa7c6d2f Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   118
    public static synchronized IFile getIndexFile(IProject project) throws CoreException {
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   119
        // There will really be a lot of calls to this method. We need to cache values.
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   120
        IFile file = getFile(project, METADATA_FILE);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   121
        if (file == null) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   122
            return null;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   123
        }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   124
        if (INDEX_FILES.containsKey(project)) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   125
            IndexFileRecord record = INDEX_FILES.get(project);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   126
            if (file == null || !file.isAccessible()) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   127
                throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, MessageFormat.format(
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   128
                        "No Info.plist for project {0}", project.getName())));
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   129
            }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   130
            if (record.timeStamp == file.getModificationStamp()) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   131
                return record.fileName;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   132
            }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   133
        }
468
a05c6e5cc7d9 Previewer now is TMWed (can support projects with different natures). Note: this commit does not compile. This previewer still only supports WRT libraries
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 415
diff changeset
   134
        String fileName = getIndexFileName(readFile(file));
479
518afa7c6d2f Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   135
        if (fileName != null) {
518afa7c6d2f Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   136
            IFile f = getFile(project, fileName);
518afa7c6d2f Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   137
            INDEX_FILES.put(project, new IndexFileRecord(f, file.getModificationStamp()));
518afa7c6d2f Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   138
            return f;
518afa7c6d2f Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   139
        }
518afa7c6d2f Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   140
        return null;
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   141
    }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   142
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   143
    private static class IndexFileRecord {
479
518afa7c6d2f Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   144
        public final IFile fileName;
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   145
        public final long timeStamp;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   146
479
518afa7c6d2f Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   147
        public IndexFileRecord(IFile fileName, long timeStamp) {
415
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   148
            this.fileName = fileName;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   149
            this.timeStamp = timeStamp;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   150
        }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   151
    }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   152
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   153
    public static boolean hasType(IJavaScriptProject project, String name) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   154
        try {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   155
            final IType[] types = project.findTypes(name);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   156
            if (types != null) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   157
                for (IType type : types) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   158
                    if (type.getJavaScriptProject().equals(project)) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   159
                        return true;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   160
                    }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   161
                }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   162
            }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   163
        } catch (JavaScriptModelException e) {
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   164
            Activator.log(e);
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   165
        }
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   166
        return false;
8198c73b9e1f Bug 2835 - Add JavaScript library is grayed out even if not already included
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 200
diff changeset
   167
    }
55
bb6160d0b6f2 Added fallback to default browser if platform is Mac or XULRunner is not available
Eugene Ostroukhov <eostroukhov@gmail.com>
parents:
diff changeset
   168
}