diff --git a/teavm-eclipse/teavm-eclipse-plugin/src/main/java/org/teavm/eclipse/TeaVMProjectBuilder.java b/teavm-eclipse/teavm-eclipse-plugin/src/main/java/org/teavm/eclipse/TeaVMProjectBuilder.java
index 650662b1a..4e40e7168 100644
--- a/teavm-eclipse/teavm-eclipse-plugin/src/main/java/org/teavm/eclipse/TeaVMProjectBuilder.java
+++ b/teavm-eclipse/teavm-eclipse-plugin/src/main/java/org/teavm/eclipse/TeaVMProjectBuilder.java
@@ -23,15 +23,16 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.util.*;
import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.variables.IStringVariableManager;
import org.eclipse.core.variables.VariablesPlugin;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.progress.IProgressService;
import org.teavm.dependency.*;
import org.teavm.model.ClassHolderTransformer;
import org.teavm.model.InstructionLocation;
@@ -131,6 +132,7 @@ public class TeaVMProjectBuilder extends IncrementalProjectBuilder {
putMarkers(tool.getDependencyViolations());
} else if (!tool.wasCancelled()) {
setClasses(profile, classesToResources(tool.getClasses()));
+ refreshTarget(tool.getTargetDirectory());
}
if (!monitor.isCanceled()) {
monitor.done();
@@ -140,6 +142,28 @@ public class TeaVMProjectBuilder extends IncrementalProjectBuilder {
}
}
+ private void refreshTarget(File targetDirectory) {
+ IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
+ IContainer[] targetContainers = workspaceRoot.findContainersForLocationURI(targetDirectory.toURI());
+ for (final IContainer container : targetContainers) {
+ if (container.exists()) {
+ Job job = new Job("Refreshing target directory") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ container.refreshLocal(IContainer.DEPTH_INFINITE, monitor);
+ } catch (CoreException e) {
+ TeaVMEclipsePlugin.logError(e);
+ return TeaVMEclipsePlugin.makeError(e);
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule();
+ }
+ }
+ }
+
private RuntimeCopyOperation mapRuntime(TeaVMRuntimeMode runtimeMode) {
switch (runtimeMode) {
case MERGE:
diff --git a/teavm-eclipse/teavm-eclipse-plugin/src/main/java/org/teavm/eclipse/debugger/ui/TeaVMDebugModelPresentation.java b/teavm-eclipse/teavm-eclipse-plugin/src/main/java/org/teavm/eclipse/debugger/ui/TeaVMDebugModelPresentation.java
index 85bb05cc3..76ff3502f 100644
--- a/teavm-eclipse/teavm-eclipse-plugin/src/main/java/org/teavm/eclipse/debugger/ui/TeaVMDebugModelPresentation.java
+++ b/teavm-eclipse/teavm-eclipse-plugin/src/main/java/org/teavm/eclipse/debugger/ui/TeaVMDebugModelPresentation.java
@@ -26,10 +26,10 @@ import org.eclipse.debug.core.model.ILineBreakpoint;
import org.eclipse.debug.core.model.IValue;
import org.eclipse.debug.ui.IDebugModelPresentation;
import org.eclipse.debug.ui.IValueDetailListener;
-import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.editors.text.EditorsUI;
+import org.eclipse.ui.IEditorRegistry;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.FileStoreEditorInput;
import org.eclipse.ui.part.FileEditorInput;
import org.teavm.debugging.CallFrame;
@@ -47,10 +47,19 @@ import org.teavm.model.ValueType;
public class TeaVMDebugModelPresentation extends LabelProvider implements IDebugModelPresentation {
@Override
public String getEditorId(IEditorInput input, Object element) {
- if (element instanceof IFile || element instanceof ILineBreakpoint || element instanceof IStorage) {
- return JavaUI.ID_CU_EDITOR;
+ IEditorRegistry registry = PlatformUI.getWorkbench().getEditorRegistry();
+ if (element instanceof IFile) {
+ IFile file = (IFile)element;
+ return registry.getDefaultEditor(file.getName()).getId();
+ } else if (element instanceof ILineBreakpoint) {
+ String fileName = ((ILineBreakpoint)element).getMarker().getResource().getName();
+ return registry.getDefaultEditor(fileName).getId();
+ } else if (element instanceof IStorage) {
+ IStorage storage = (IStorage)element;
+ return registry.getDefaultEditor(storage.getName()).getId();
} else if (element instanceof URL) {
- return EditorsUI.DEFAULT_TEXT_EDITOR_ID;
+ URL url = (URL)element;
+ return registry.getDefaultEditor(url.getFile()).getId();
}
return null;
}
diff --git a/teavm-maven/teavm-maven-webapp/src/main/resources/archetype-resources/pom.xml b/teavm-maven/teavm-maven-webapp/src/main/resources/archetype-resources/pom.xml
index d62cdf9b7..9210cedc6 100644
--- a/teavm-maven/teavm-maven-webapp/src/main/resources/archetype-resources/pom.xml
+++ b/teavm-maven/teavm-maven-webapp/src/main/resources/archetype-resources/pom.xml
@@ -10,6 +10,7 @@
1.7
0.2-SNAPSHOT
+ UTF-8