Each version has its own settings

This commit is contained in:
huangyuhui
2016-01-29 22:21:13 +08:00
parent d2162f31e4
commit f8eec1b7d5
30 changed files with 710 additions and 574 deletions

View File

@@ -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;
}

View File

@@ -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 {

View File

@@ -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;
}

View File

@@ -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();
}

View File

@@ -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();

View File

@@ -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(

View File

View File

View File

@@ -198,9 +198,10 @@ settings.cannot_remove_default_config=\u4e0d\u80fd\u5220\u9664\u9ed8\u8ba4\u914d
settings.max_memory=\u6700\u5927\u5185\u5b58/MB
settings.java_dir=Java\u8def\u5f84
settings.game_directory=\u6e38\u620f\u8def\u5f84
settings.dimension=\u5206\u8fa8\u7387
settings.dimension=\u6e38\u620f\u7a97\u53e3\u5206\u8fa8\u7387
settings.fullscreen=\u5168\u5c4f
settings.update_version=\u66f4\u65b0\u7248\u672c\u6587\u4ef6
settings.run_directory=\u8fd0\u884c\u8def\u5f84(\u7248\u672c\u9694\u79bb)
settings.physical_memory=\u7269\u7406\u5185\u5b58\u5927\u5c0f
settings.choose_javapath=\u9009\u62e9Java\u8def\u5f84
settings.default=\u9ed8\u8ba4
@@ -237,8 +238,7 @@ mods.default_information=<html><font color=#c0392b>\u5b89\u88c5Mod\u524d\u4f60\u
advancedsettings=\u9ad8\u7ea7\u8bbe\u7f6e
advancedsettings.launcher_visible=\u542f\u52a8\u5668\u53ef\u89c1\u6027
advancedsettings.run_directory=\u8fd0\u884c\u8def\u5f84
advencedsettings.debug_mode=\u8c03\u8bd5\u6a21\u5f0f
advancedsettings.debug_mode=\u8c03\u8bd5\u6a21\u5f0f
advancedsettings.java_permanent_generation_space=\u5185\u5b58\u6c38\u4e45\u4fdd\u5b58\u533a\u57df(\u4e0d\u5fc5\u586b\u5199,MB)
advancedsettings.jvm_args=Java\u865a\u62df\u673a\u53c2\u6570(\u4e0d\u5fc5\u586b\u5199)
advancedsettings.Minecraft_arguments=Minecraft\u989d\u5916\u53c2\u6570(\u4e0d\u5fc5\u586b\u5199)
@@ -368,4 +368,5 @@ wizard.close=\u5173\u95ed
wizard.close_mnemonic=\u5173
wizard.summary=\u6982\u8981
wizard.failed=\u5931\u8d25
wizard.steps=\u6b65\u9aa4
wizard.steps=\u6b65\u9aa4
advancedsettings.debug_mode=\u8c03\u8bd5\u6a21\u5f0f

View File

@@ -197,10 +197,11 @@ settings.manage=Manage
settings.cannot_remove_default_config=Cannot remove the default configution.
settings.max_memory=Max Memory/MB
settings.java_dir=Java Dir
settings.game_directory=Game Dir
settings.dimension=Dimension
settings.game_directory=Game Directory
settings.dimension=Game Window Dimension
settings.fullscreen=Fullscreen
settings.update_version=Update version json.
settings.run_directory=Run Directory(Version Isolation)
settings.physical_memory=Physical Memory Size
settings.choose_javapath=Choose Java Directory.
settings.default=Default
@@ -237,8 +238,7 @@ mods.default_information=<html><font color=#c0392b>Please ensure that you have i
advancedsettings=Advanced
advancedsettings.launcher_visible=Launcher Visibility
advancedsettings.run_directory=Run Directory
advencedsettings.debug_mode=Debug Mode
advancedsettings.debug_mode=Debug Mode
advancedsettings.java_permanent_generation_space=Permanent Generation Space/MB
advancedsettings.jvm_args=Java VM Arguments
advancedsettings.Minecraft_arguments=Minecraft Arguments

View File

@@ -198,9 +198,10 @@ settings.cannot_remove_default_config=\u4e0d\u80fd\u522a\u9664\u9ed8\u8a8d\u914d
settings.max_memory=\u6700\u5927\u5167\u5b58\uff08MB\uff09
settings.java_dir=Java\u8def\u5f91
settings.game_directory=\u904a\u6232\u8def\u5f91
settings.dimension=\u5206\u8fa8\u7387
settings.dimension=\u6e38\u620f\u7a97\u53e3\u5206\u8fa8\u7387
settings.fullscreen=\u5168\u5c4f
settings.update_version=\u66f4\u65b0\u7248\u672c\u8cc7\u6599
settings.run_directory=\u904b\u884c\u8def\u5f91(\u7248\u672c\u9694\u96e2)
settings.physical_memory=\u7269\u7406\u5185\u5b58\u5927\u5c0f
settings.choose_javapath=\u9009\u62e9Java\u8def\u5f84
settings.default=\u9ed8\u8a8d
@@ -237,8 +238,7 @@ mods.default_information=<html>\u60a8\u53ef\u4ee5\u62d6\u52a8mod\u5230\u5217\u88
advancedsettings=\u9ad8\u7d1a\u8a2d\u5b9a
advancedsettings.launcher_visible=\u555f\u52d5\u5668\u53ef\u898b\u6027
advancedsettings.run_directory=\u904b\u884c\u8def\u5f91
advencedsettings.debug_mode=\u8abf\u8a66\u6a21\u5f0f
advancedsettings.debug_mode=\u8abf\u8a66\u6a21\u5f0f
advancedsettings.java_permanent_generation_space=\u5167\u5b58\u6c38\u4e45\u4fdd\u5b58\u5340\u57df/MB
advancedsettings.jvm_args=Java\u865b\u64ec\u6a5f\u53c3\u6578(\u4e0d\u5fc5\u586b\u5beb)
advancedsettings.Minecraft_arguments=Minecraft\u984d\u5916\u53c3\u6578(\u4e0d\u5fc5\u586b\u5beb)

View File

@@ -198,10 +198,11 @@ settings.cannot_remove_default_config=\u4e0d\u80fd\u5220\u9664\u9ed8\u8ba4\u914d
settings.max_memory=\u6700\u5927\u5185\u5b58/MB
settings.java_dir=Java\u8def\u5f84
settings.game_directory=\u6e38\u620f\u8def\u5f84
settings.dimension=\u5206\u8fa8\u7387
settings.dimension=\u6e38\u620f\u7a97\u53e3\u5206\u8fa8\u7387
settings.fullscreen=\u5168\u5c4f
settings.update_version=\u66f4\u65b0\u7248\u672c\u6587\u4ef6
settings.physical_memory=\u7269\u7406\u5185\u5b58\u5927\u5c0f
settings.run_directory=\u8fd0\u884c\u8def\u5f84(\u7248\u672c\u9694\u79bb)
settings.choose_javapath=\u9009\u62e9Java\u8def\u5f84
settings.default=\u9ed8\u8ba4
settings.custom=\u81ea\u5b9a\u4e49
@@ -237,8 +238,7 @@ mods.default_information=<html><font color=#c0392b>\u5b89\u88c5Mod\u524d\u4f60\u
advancedsettings=\u9ad8\u7ea7\u8bbe\u7f6e
advancedsettings.launcher_visible=\u542f\u52a8\u5668\u53ef\u89c1\u6027
advancedsettings.run_directory=\u8fd0\u884c\u8def\u5f84
advencedsettings.debug_mode=\u8c03\u8bd5\u6a21\u5f0f
advancedsettings.debug_mode=\u8c03\u8bd5\u6a21\u5f0f
advancedsettings.java_permanent_generation_space=\u5185\u5b58\u6c38\u4e45\u4fdd\u5b58\u533a\u57df(\u4e0d\u5fc5\u586b\u5199,MB)
advancedsettings.jvm_args=Java\u865a\u62df\u673a\u53c2\u6570(\u4e0d\u5fc5\u586b\u5199)
advancedsettings.Minecraft_arguments=Minecraft\u989d\u5916\u53c2\u6570(\u4e0d\u5fc5\u586b\u5199)