Skip to content

Commit cb78283

Browse files
committed
WIP: Add logic for migrating to Jaunch launcher
Closes #93.
1 parent 237405d commit cb78283

File tree

3 files changed

+590
-13
lines changed

3 files changed

+590
-13
lines changed

pom.xml

+7-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<groupId>net.imagej</groupId>
1313
<artifactId>imagej-ui-swing</artifactId>
14-
<version>1.0.2-SNAPSHOT</version>
14+
<version>1.2.0-SNAPSHOT</version>
1515

1616
<name>ImageJ UI: Swing</name>
1717
<description>ImageJ UI for Java Swing.</description>
@@ -160,6 +160,7 @@
160160
<!-- NB: Deploy releases to the SciJava Maven repository. -->
161161
<releaseProfiles>sign,deploy-to-scijava</releaseProfiles>
162162

163+
<app-launcher.version>2.0.0</app-launcher.version>
163164
<jhotdraw.version>7.6.0</jhotdraw.version>
164165
</properties>
165166

@@ -189,6 +190,11 @@
189190
</dependency>
190191

191192
<!-- SciJava dependencies -->
193+
<dependency>
194+
<groupId>org.scijava</groupId>
195+
<artifactId>app-launcher</artifactId>
196+
<version>${app-launcher.version}</version>
197+
</dependency>
192198
<dependency>
193199
<groupId>org.scijava</groupId>
194200
<artifactId>scijava-common</artifactId>

src/main/java/net/imagej/ui/swing/updater/ImageJUpdater.java

+17-12
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,25 @@
2929

3030
package net.imagej.ui.swing.updater;
3131

32+
import java.awt.EventQueue;
3233
import java.io.DataInputStream;
3334
import java.io.File;
3435
import java.io.IOException;
3536
import java.lang.reflect.InvocationTargetException;
3637
import java.net.Authenticator;
3738
import java.net.HttpURLConnection;
38-
import java.net.MalformedURLException;
3939
import java.net.URL;
40-
import java.net.URLClassLoader;
4140
import java.net.URLConnection;
4241
import java.net.UnknownHostException;
43-
import java.util.ArrayList;
4442
import java.util.List;
4543

4644
import net.imagej.ui.swing.updater.ViewOptions.Option;
4745
import net.imagej.updater.*;
4846
import net.imagej.updater.Conflicts.Conflict;
4947
import net.imagej.updater.util.*;
5048

49+
import org.scijava.Context;
5150
import org.scijava.app.StatusService;
52-
import org.scijava.command.CommandService;
5351
import org.scijava.event.ContextDisposingEvent;
5452
import org.scijava.event.EventHandler;
5553
import org.scijava.log.LogService;
@@ -59,8 +57,6 @@
5957
import org.scijava.plugin.Plugin;
6058
import org.scijava.util.AppUtils;
6159

62-
import javax.swing.*;
63-
6460
/**
6561
* The Updater. As a command.
6662
*
@@ -69,8 +65,12 @@
6965
@Plugin(type = UpdaterUI.class, menu = { @Menu(label = "Help"),
7066
@Menu(label = "Update...") })
7167
public class ImageJUpdater implements UpdaterUI {
68+
7269
private UpdaterFrame main;
7370

71+
@Parameter(required = false)
72+
private Context context;
73+
7474
@Parameter(required = false)
7575
private StatusService statusService;
7676

@@ -82,6 +82,7 @@ public class ImageJUpdater implements UpdaterUI {
8282

8383
@Override
8484
public void run() {
85+
new LauncherMigrator(context).checkLaunchStatus();
8586

8687
if (errorIfDebian()) return;
8788

@@ -91,14 +92,12 @@ public void run() {
9192

9293
if (errorIfNetworkInaccessible(log)) return;
9394

94-
String imagejDirProperty = System.getProperty("imagej.dir");
95-
final File imagejRoot = imagejDirProperty != null ? new File(imagejDirProperty) :
96-
AppUtils.getBaseDirectory("ij.dir", FilesCollection.class, "updater");
97-
final FilesCollection files = new FilesCollection(log, imagejRoot);
95+
final File appDir = getAppDirectory();
96+
final FilesCollection files = new FilesCollection(log, appDir);
9897

9998
UpdaterUserInterface.set(new SwingUserInterface(log, statusService));
10099

101-
if (new File(imagejRoot, "update").exists()) {
100+
if (new File(appDir, "update").exists()) {
102101
if (!UpdaterUserInterface.get().promptYesNo("It is suggested that you restart ImageJ, then continue the update.\n"
103102
+ "Alternately, you can attempt to continue the upgrade without\n"
104103
+ "restarting, but ImageJ might crash.\n\n"
@@ -187,14 +186,20 @@ protected void updateConflictList() {
187186
main.updateFilesTable();
188187
}
189188

189+
static File getAppDirectory() {
190+
String imagejDirProperty = System.getProperty("imagej.dir");
191+
return imagejDirProperty != null ? new File(imagejDirProperty) :
192+
AppUtils.getBaseDirectory("ij.dir", FilesCollection.class, "updater");
193+
}
194+
190195
private void refreshUpdateSites(FilesCollection files)
191196
throws InterruptedException, InvocationTargetException
192197
{
193198
List<URLChange>
194199
changes = AvailableSites.initializeAndAddSites(files, (Logger) log);
195200
if(ReviewSiteURLsDialog.shouldBeDisplayed(changes)) {
196201
ReviewSiteURLsDialog dialog = new ReviewSiteURLsDialog(main, changes);
197-
SwingUtilities.invokeAndWait(() -> dialog.setVisible(true));
202+
EventQueue.invokeAndWait(() -> dialog.setVisible(true));
198203
if(dialog.isOkPressed())
199204
AvailableSites.applySitesURLUpdates(files, changes);
200205
}

0 commit comments

Comments
 (0)