Each version has its own settings
This commit is contained in:
@@ -46,11 +46,13 @@ public abstract class OverridableSwingWorker<T> extends SwingWorker<Void, T> {
|
||||
}
|
||||
|
||||
public OverridableSwingWorker reg(Consumer<T> c) {
|
||||
Utils.requireNonNull(c);
|
||||
processListeners.add(c);
|
||||
return this;
|
||||
}
|
||||
|
||||
public OverridableSwingWorker regDone(Runnable c) {
|
||||
Utils.requireNonNull(c);
|
||||
doneListeners.add(c);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public final class UpdateChecker implements IUpdateChecker {
|
||||
VersionNumber value;
|
||||
|
||||
@Override
|
||||
public OverridableSwingWorker<VersionNumber> process(boolean showMessage) {
|
||||
public OverridableSwingWorker<VersionNumber> process(final boolean showMessage) {
|
||||
return new OverridableSwingWorker() {
|
||||
@Override
|
||||
protected void work() throws Exception {
|
||||
|
||||
@@ -87,11 +87,11 @@ public abstract class Task {
|
||||
|
||||
public abstract String getInfo();
|
||||
|
||||
public Collection<Task> getDependTasks() {
|
||||
public Collection<? extends Task> getDependTasks() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Collection<Task> getAfterTasks() {
|
||||
public Collection<? extends Task> getAfterTasks() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -79,15 +79,15 @@ public class TaskList extends Thread {
|
||||
public void run() {
|
||||
executeTask(task);
|
||||
s.remove(this);
|
||||
threadPool.remove(this);
|
||||
THREAD_POOL.remove(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static final Set<InvokeThread> threadPool = Collections.synchronizedSet(new HashSet<InvokeThread>());
|
||||
static final Set<Task> taskPool = Collections.synchronizedSet(new HashSet<Task>());
|
||||
static final Set<InvokeThread> THREAD_POOL = Collections.synchronizedSet(new HashSet<InvokeThread>());
|
||||
static final Set<Task> TASK_POOL = Collections.synchronizedSet(new HashSet<Task>());
|
||||
|
||||
private void processTasks(Collection<Task> c) {
|
||||
private void processTasks(Collection<? extends Task> c) {
|
||||
if (c == null)
|
||||
return;
|
||||
this.totTask += c.size();
|
||||
@@ -95,7 +95,7 @@ public class TaskList extends Thread {
|
||||
for (Task t2 : c) {
|
||||
t2.setParallelExecuting(true);
|
||||
InvokeThread thread = new InvokeThread(t2, runningThread);
|
||||
threadPool.add(thread);
|
||||
THREAD_POOL.add(thread);
|
||||
runningThread.add(thread);
|
||||
thread.start();
|
||||
}
|
||||
@@ -147,7 +147,7 @@ public class TaskList extends Thread {
|
||||
public void run() {
|
||||
Thread.currentThread().setName("TaskList");
|
||||
|
||||
threadPool.clear();
|
||||
THREAD_POOL.clear();
|
||||
totTask = taskQueue.size();
|
||||
while (!taskQueue.isEmpty())
|
||||
executeTask(taskQueue.remove(0));
|
||||
@@ -162,12 +162,12 @@ public class TaskList extends Thread {
|
||||
|
||||
public void abort() {
|
||||
shouldContinue = false;
|
||||
while (!threadPool.isEmpty())
|
||||
synchronized (threadPool) {
|
||||
InvokeThread it = threadPool.iterator().next();
|
||||
while (!THREAD_POOL.isEmpty())
|
||||
synchronized (THREAD_POOL) {
|
||||
InvokeThread it = THREAD_POOL.iterator().next();
|
||||
if (!it.task.abort())
|
||||
it.interrupt();
|
||||
threadPool.remove(it);
|
||||
THREAD_POOL.remove(it);
|
||||
}
|
||||
this.interrupt();
|
||||
}
|
||||
|
||||
@@ -199,20 +199,23 @@ public class NavButtonManager implements ActionListener {
|
||||
final boolean enableNext = nextStep != null && canContinue && problem == null && !isDeferredResult;
|
||||
final boolean enablePrevious = wizard.getPreviousStep() != null && !isDeferredResult;
|
||||
|
||||
final Runnable runnable = () -> {
|
||||
next.setEnabled(enableNext);
|
||||
prev.setEnabled(enablePrevious);
|
||||
finish.setEnabled(enableFinish);
|
||||
JRootPane root = next.getRootPane();
|
||||
if (root != null)
|
||||
if (next.isEnabled())
|
||||
root.setDefaultButton(next);
|
||||
else if (finish.isEnabled())
|
||||
root.setDefaultButton(finish);
|
||||
else if (prev.isEnabled())
|
||||
root.setDefaultButton(prev);
|
||||
else
|
||||
root.setDefaultButton(null);
|
||||
final Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
next.setEnabled(enableNext);
|
||||
prev.setEnabled(enablePrevious);
|
||||
finish.setEnabled(enableFinish);
|
||||
JRootPane root = next.getRootPane();
|
||||
if (root != null)
|
||||
if (next.isEnabled())
|
||||
root.setDefaultButton(next);
|
||||
else if (finish.isEnabled())
|
||||
root.setDefaultButton(finish);
|
||||
else if (prev.isEnabled())
|
||||
root.setDefaultButton(prev);
|
||||
else
|
||||
root.setDefaultButton(null);
|
||||
}
|
||||
};
|
||||
|
||||
if (EventQueue.isDispatchThread())
|
||||
@@ -263,18 +266,21 @@ public class NavButtonManager implements ActionListener {
|
||||
}
|
||||
|
||||
void deferredResultFailed(final boolean canGoBack) {
|
||||
final Runnable runnable = () -> {
|
||||
if (!canGoBack)
|
||||
getCancel().setText(getCloseString());
|
||||
getPrev().setEnabled(true);
|
||||
getNext().setEnabled(false);
|
||||
getCancel().setEnabled(true);
|
||||
getFinish().setEnabled(false);
|
||||
final Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!canGoBack)
|
||||
getCancel().setText(getCloseString());
|
||||
getPrev().setEnabled(true);
|
||||
getNext().setEnabled(false);
|
||||
getCancel().setEnabled(true);
|
||||
getFinish().setEnabled(false);
|
||||
|
||||
if (NAME_CLOSE.equals(deferredStatus)) {
|
||||
// no action
|
||||
} else
|
||||
deferredStatus = DEFERRED_FAILED + deferredStatus;
|
||||
if (NAME_CLOSE.equals(deferredStatus)) {
|
||||
// no action
|
||||
} else
|
||||
deferredStatus = DEFERRED_FAILED + deferredStatus;
|
||||
}
|
||||
};
|
||||
if (EventQueue.isDispatchThread())
|
||||
runnable.run();
|
||||
@@ -596,22 +602,25 @@ public class NavButtonManager implements ActionListener {
|
||||
}
|
||||
|
||||
public void navigabilityChanged(final Wizard wizard) {
|
||||
final Runnable runnable = () -> {
|
||||
if (wizard.isBusy()) {
|
||||
next.setEnabled(false);
|
||||
prev.setEnabled(false);
|
||||
finish.setEnabled(false);
|
||||
cancel.setEnabled(false);
|
||||
parent.getOuterPanel().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
wasBusy = true;
|
||||
return;
|
||||
} else if (wasBusy) {
|
||||
cancel.setEnabled(true);
|
||||
parent.getOuterPanel().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||
}
|
||||
configureNavigationButtons(wizard, prev, next, finish);
|
||||
final Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (wizard.isBusy()) {
|
||||
next.setEnabled(false);
|
||||
prev.setEnabled(false);
|
||||
finish.setEnabled(false);
|
||||
cancel.setEnabled(false);
|
||||
parent.getOuterPanel().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
wasBusy = true;
|
||||
return;
|
||||
} else if (wasBusy) {
|
||||
cancel.setEnabled(true);
|
||||
parent.getOuterPanel().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||
}
|
||||
configureNavigationButtons(wizard, prev, next, finish);
|
||||
|
||||
parent.updateProblem();
|
||||
parent.updateProblem();
|
||||
}
|
||||
};
|
||||
if (EventQueue.isDispatchThread())
|
||||
runnable.run();
|
||||
|
||||
@@ -29,7 +29,6 @@ import java.awt.IllegalComponentStateException;
|
||||
import java.awt.Insets;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.Locale;
|
||||
import java.util.Arrays;
|
||||
import javax.accessibility.Accessible;
|
||||
@@ -119,34 +118,6 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
}
|
||||
|
||||
public InstructionsPanelImpl(BufferedImage img, Wizard wizard) {
|
||||
if (img == null)
|
||||
//In the event of classloader issues, also have a way to get
|
||||
//the image from UIManager - slightly more portable for large
|
||||
//apps
|
||||
img = (BufferedImage) UIManager.get("wizard.sidebar.image");
|
||||
|
||||
String imgStr = System.getProperty("wizard.sidebar.image");
|
||||
//image has not been loaded and user wishes to supply their own image
|
||||
if (img == null && imgStr != null) {
|
||||
//get an URL, works for jars
|
||||
ClassLoader cl = this.getClass().getClassLoader();
|
||||
URL url = cl.getResource(imgStr);
|
||||
//successfully parsed the URL
|
||||
if (url != null)
|
||||
try {
|
||||
img = ImageIO.read(url);
|
||||
} catch (IOException ioe) {
|
||||
System.err.println("Could not load wizard image "
|
||||
+ ioe.getMessage());
|
||||
System.setProperty("wizard.sidebar.image", null);
|
||||
img = null; //error loading img, set to null to use default
|
||||
}
|
||||
else { //URL was not successfully parsed, set img to null to use default
|
||||
System.err.println("Bad URL for wizard image " + imgStr);
|
||||
System.setProperty("wizard.sidebar.image", null);
|
||||
img = null;
|
||||
}
|
||||
}
|
||||
if (img == null)
|
||||
try {
|
||||
img = ImageIO.read(InstructionsPanelImpl.class.getResourceAsStream(
|
||||
|
||||
0
HMCLAPI/src/main/java/org/tukaani/xz/CountingInputStream.java
Executable file → Normal file
0
HMCLAPI/src/main/java/org/tukaani/xz/CountingInputStream.java
Executable file → Normal file
0
HMCLAPI/src/main/java/org/tukaani/xz/CountingOutputStream.java
Executable file → Normal file
0
HMCLAPI/src/main/java/org/tukaani/xz/CountingOutputStream.java
Executable file → Normal file
Reference in New Issue
Block a user