add some localization items
This commit is contained in:
@@ -23,16 +23,14 @@ import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JRootPane;
|
||||
import javax.swing.UIManager;
|
||||
import org.jackhuang.hellominecraft.utils.C;
|
||||
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.api.WizardDisplayer;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.modules.MergeMap;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.modules.NbBridge;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.DeferredWizardResult;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.Summary;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.Wizard;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.WizardException;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.WizardObserver;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.WizardPage;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.WizardPanel;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.WizardPanelNavResult;
|
||||
|
||||
@@ -84,9 +82,6 @@ public class NavButtonManager implements ActionListener {
|
||||
|
||||
WizardDisplayerImpl parent;
|
||||
|
||||
String closeString = NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Close"); // NOI18N
|
||||
|
||||
boolean suppressMessageDialog = false;
|
||||
/**
|
||||
* Deferred status of not null means we are waiting for a deferred result to
|
||||
@@ -102,44 +97,28 @@ public class NavButtonManager implements ActionListener {
|
||||
|
||||
protected void buildButtons(Action helpAction) {
|
||||
|
||||
next = new JButton(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Next_>")); // NOI18N
|
||||
next = new JButton(C.i18n("wizard.next_>"));
|
||||
next.setName(NAME_NEXT);
|
||||
next.setMnemonic(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Next_mnemonic").charAt(0)); // NOI18N
|
||||
next.setMnemonic(C.i18n("wizard.next_mnemonic").charAt(0));
|
||||
|
||||
prev = new JButton(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "<_Prev")); // NOI18N
|
||||
prev = new JButton(C.i18n("wizard.<_prev"));
|
||||
prev.setName(NAME_PREV);
|
||||
prev.setMnemonic(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Prev_mnemonic").charAt(0)); // NOI18N
|
||||
prev.setMnemonic(C.i18n("wizard.prev_mnemonic").charAt(0));
|
||||
|
||||
finish = new JButton(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Finish")); // NOI18N
|
||||
finish = new JButton(C.i18n("wizard.finish")); // NOI18N
|
||||
finish.setName(NAME_FINISH);
|
||||
finish.setMnemonic(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Finish_mnemonic").charAt(0)); // NOI18N
|
||||
finish.setMnemonic(C.i18n("wizard.finish_mnemonic").charAt(0));
|
||||
|
||||
cancel = new JButton(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Cancel")); // NOI18N
|
||||
cancel = new JButton(C.i18n("wizard.cancel"));
|
||||
cancel.setName(NAME_CANCEL);
|
||||
cancel.setMnemonic(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Cancel_mnemonic").charAt(0)); // NOI18N
|
||||
cancel.setMnemonic(C.i18n("wizard.cancel_mnemonic").charAt(0));
|
||||
|
||||
help = new JButton();
|
||||
if (helpAction != null) {
|
||||
if (helpAction != null)
|
||||
help.setAction(helpAction);
|
||||
if (helpAction.getValue(Action.NAME) == null) {
|
||||
help.setText(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Help")); // NOI18N
|
||||
help.setMnemonic(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Help_mnemonic").charAt(0)); // NOI18N
|
||||
}
|
||||
} else {
|
||||
help.setText(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Help")); // NOI18N
|
||||
help.setMnemonic(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Help_mnemonic").charAt(0)); // NOI18N
|
||||
if (helpAction == null || helpAction.getValue(Action.NAME) == null) {
|
||||
help.setText(C.i18n("wizard.help"));
|
||||
help.setMnemonic(C.i18n("wizard.help_mnemonic").charAt(0));
|
||||
}
|
||||
|
||||
next.setDefaultCapable(true);
|
||||
@@ -224,24 +203,20 @@ public class NavButtonManager implements ActionListener {
|
||||
final boolean enableNext = nextStep != null && canContinue && problem == null && !isDeferredResult;
|
||||
final boolean enablePrevious = wizard.getPreviousStep() != null && !isDeferredResult;
|
||||
|
||||
final Runnable runnable = new Runnable() {
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
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);
|
||||
};
|
||||
|
||||
if (EventQueue.isDispatchThread())
|
||||
@@ -268,34 +243,42 @@ public class NavButtonManager implements ActionListener {
|
||||
return;
|
||||
}
|
||||
|
||||
if (NAME_NEXT.equals(name))
|
||||
processNext();
|
||||
else if (NAME_PREV.equals(name))
|
||||
processPrev();
|
||||
else if (NAME_FINISH.equals(name))
|
||||
processFinish(event);
|
||||
else if (NAME_CLOSE.equals(name))
|
||||
processClose(event);
|
||||
if (null != name)
|
||||
switch (name) {
|
||||
case NAME_NEXT:
|
||||
processNext();
|
||||
break;
|
||||
case NAME_PREV:
|
||||
processPrev();
|
||||
break;
|
||||
case NAME_FINISH:
|
||||
processFinish(event);
|
||||
break;
|
||||
case NAME_CLOSE:
|
||||
processClose(event);
|
||||
// else ignore, we don't know it
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// else ignore, we don't know it
|
||||
|
||||
parent.updateProblem();
|
||||
}
|
||||
|
||||
void deferredResultFailed(final boolean canGoBack) {
|
||||
final Runnable runnable = new Runnable() {
|
||||
public void run() {
|
||||
if (!canGoBack)
|
||||
getCancel().setText(closeString);
|
||||
getPrev().setEnabled(true);
|
||||
getNext().setEnabled(false);
|
||||
getCancel().setEnabled(true);
|
||||
getFinish().setEnabled(false);
|
||||
final Runnable runnable = () -> {
|
||||
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();
|
||||
@@ -326,23 +309,31 @@ public class NavButtonManager implements ActionListener {
|
||||
return;
|
||||
}
|
||||
|
||||
if (NAME_NEXT.equals(name))
|
||||
switch (name) {
|
||||
case NAME_NEXT:
|
||||
processNextProceed(o);
|
||||
else if (NAME_PREV.equals(name))
|
||||
break;
|
||||
// else ignore, we don't know it
|
||||
case NAME_PREV:
|
||||
processPrevProceed(o);
|
||||
else if (NAME_CANCEL.equals(name))
|
||||
break;
|
||||
case NAME_CANCEL:
|
||||
processCancel(o instanceof ActionEvent ? (ActionEvent) o
|
||||
: null, false);
|
||||
else if (NAME_FINISH.equals(name))
|
||||
break;
|
||||
case NAME_FINISH:
|
||||
// allowFinish on the "down" click of the finish button
|
||||
processFinishProceed(o);
|
||||
else if (NAME_CLOSE.equals(name)) {
|
||||
break;
|
||||
case NAME_CLOSE:
|
||||
// the "up" click of the finish button: wizard.finish was a deferred result
|
||||
Window dlg = getWindow();
|
||||
dlg.setVisible(false);
|
||||
dlg.dispose();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// else ignore, we don't know it
|
||||
|
||||
parent.updateProblem();
|
||||
}
|
||||
@@ -484,14 +475,10 @@ public class NavButtonManager implements ActionListener {
|
||||
curr = settings.popAndCalve();
|
||||
settings.push(id);
|
||||
parent.navigateTo(id);
|
||||
return;
|
||||
} catch (NoSuchElementException ex) {
|
||||
IllegalStateException e = new IllegalStateException("Exception "
|
||||
+ // NOI18N
|
||||
"said to return to " + id + " but no such "
|
||||
+ // NOI18N
|
||||
"step found"); // NOI18N
|
||||
e.initCause(ex);
|
||||
+ "said to return to " + id + " but no such "
|
||||
+ "step found", ex);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
@@ -504,11 +491,9 @@ public class NavButtonManager implements ActionListener {
|
||||
Wizard wizard = parent.getWizard();
|
||||
MergeMap settings = parent.getSettings();
|
||||
|
||||
// System.err.println("ProcessCancel " + reallyCancel + " receiver " + parent.receiver);
|
||||
boolean closeWindow = false;
|
||||
boolean closeWindow;
|
||||
|
||||
if (reallyCancel && parent.cancel()) {
|
||||
// System.err.println("DO CANCEL");
|
||||
logger.fine("calling wizard cancel method on " + wizard);
|
||||
wizard.cancel(settings);
|
||||
return;
|
||||
@@ -545,9 +530,8 @@ public class NavButtonManager implements ActionListener {
|
||||
if (window != null && parent.receiver == null && window instanceof JDialog)
|
||||
((JDialog) window).getRootPane().setDefaultButton(cancel);
|
||||
|
||||
cancel.setText(closeString); // NOI18N
|
||||
cancel.setMnemonic(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/api/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Close_mnemonic").charAt(0)); // NOI18N
|
||||
cancel.setText(getCloseString()); // NOI18N
|
||||
cancel.setMnemonic(C.i18n("wizard.close_mnemonic").charAt(0));
|
||||
cancel.setName(NAME_CLOSE);
|
||||
deferredStatus = null; // ?? should summary be different
|
||||
}
|
||||
@@ -565,7 +549,7 @@ public class NavButtonManager implements ActionListener {
|
||||
}
|
||||
|
||||
public String getCloseString() {
|
||||
return closeString;
|
||||
return C.i18n("wizard.close");
|
||||
}
|
||||
|
||||
public Window getWindow() {
|
||||
@@ -617,26 +601,22 @@ public class NavButtonManager implements ActionListener {
|
||||
}
|
||||
|
||||
public void navigabilityChanged(final Wizard wizard) {
|
||||
final Runnable runnable = new Runnable() {
|
||||
|
||||
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();
|
||||
|
||||
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);
|
||||
|
||||
parent.updateProblem();
|
||||
};
|
||||
if (EventQueue.isDispatchThread())
|
||||
runnable.run();
|
||||
|
||||
@@ -11,13 +11,10 @@ import javax.swing.ImageIcon;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JProgressBar;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import org.jackhuang.hellominecraft.utils.C;
|
||||
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.api.WizardDisplayer;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.modules.InstructionsPanelImpl;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.modules.NbBridge;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.ResultProgressHandle;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.Summary;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.WizardPage;
|
||||
|
||||
/**
|
||||
* Show progress bar for deferred results, with a label showing percent done and
|
||||
@@ -75,49 +72,40 @@ public class NavProgress implements ResultProgressHandle {
|
||||
}
|
||||
|
||||
public void setProgress(final String description, final int currentStep, final int totalSteps) {
|
||||
Runnable r = new Runnable() {
|
||||
public void run() {
|
||||
lbl.setText(description == null ? " " : description); // NOI18N
|
||||
setProgress(currentStep, totalSteps);
|
||||
}
|
||||
};
|
||||
invoke(r);
|
||||
invoke(() -> {
|
||||
lbl.setText(description == null ? " " : description); // NOI18N
|
||||
setProgress(currentStep, totalSteps);
|
||||
});
|
||||
}
|
||||
|
||||
public void setProgress(final int currentStep, final int totalSteps) {
|
||||
Runnable r = new Runnable() {
|
||||
public void run() {
|
||||
if (totalSteps == -1)
|
||||
progressBar.setIndeterminate(true);
|
||||
else {
|
||||
if (currentStep > totalSteps || currentStep < 0) {
|
||||
if (currentStep == -1 && totalSteps == -1)
|
||||
return;
|
||||
throw new IllegalArgumentException("Bad step values: " // NOI18N
|
||||
+ currentStep + " out of " + totalSteps); // NOI18N
|
||||
}
|
||||
progressBar.setIndeterminate(false);
|
||||
progressBar.setMaximum(totalSteps);
|
||||
progressBar.setValue(currentStep);
|
||||
invoke(() -> {
|
||||
if (totalSteps == -1)
|
||||
progressBar.setIndeterminate(true);
|
||||
else {
|
||||
if (currentStep > totalSteps || currentStep < 0) {
|
||||
if (currentStep == -1 && totalSteps == -1)
|
||||
return;
|
||||
throw new IllegalArgumentException("Bad step values: "
|
||||
+ currentStep + " out of " + totalSteps);
|
||||
}
|
||||
|
||||
setUseBusy(false);
|
||||
progressBar.setIndeterminate(false);
|
||||
progressBar.setMaximum(totalSteps);
|
||||
progressBar.setValue(currentStep);
|
||||
}
|
||||
};
|
||||
invoke(r);
|
||||
|
||||
setUseBusy(false);
|
||||
});
|
||||
}
|
||||
|
||||
public void setBusy(final String description) {
|
||||
Runnable r = new Runnable() {
|
||||
public void run() {
|
||||
lbl.setText(description == null ? " " : description); // NOI18N
|
||||
invoke(() -> {
|
||||
lbl.setText(description == null ? " " : description);
|
||||
|
||||
progressBar.setIndeterminate(true);
|
||||
progressBar.setIndeterminate(true);
|
||||
|
||||
setUseBusy(true);
|
||||
}
|
||||
};
|
||||
invoke(r);
|
||||
setUseBusy(true);
|
||||
});
|
||||
}
|
||||
|
||||
protected void setUseBusy(boolean useBusy) {
|
||||
@@ -137,7 +125,7 @@ public class NavProgress implements ResultProgressHandle {
|
||||
|
||||
private void ensureBusyInitialized() {
|
||||
if (busy.getIcon() == null) {
|
||||
URL url = getClass().getResource("busy.gif");
|
||||
URL url = getClass().getResource("/org/jackhuang/hellominecraft/busy.gif");
|
||||
Icon icon = new ImageIcon(url);
|
||||
busy.setIcon(icon);
|
||||
}
|
||||
@@ -149,29 +137,24 @@ public class NavProgress implements ResultProgressHandle {
|
||||
else
|
||||
try {
|
||||
EventQueue.invokeAndWait(r);
|
||||
} catch (InvocationTargetException ex) {
|
||||
} catch (InvocationTargetException | InterruptedException ex) {
|
||||
ex.printStackTrace();
|
||||
logger.severe("Error invoking operation " + ex.getClass().getName() + " " + ex.getMessage());
|
||||
} catch (InterruptedException ex) {
|
||||
logger.severe("Error invoking operation " + ex.getClass().getName() + " " + ex.getMessage());
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void finished(final Object o) {
|
||||
isRunning = false;
|
||||
Runnable r = new Runnable() {
|
||||
public void run() {
|
||||
if (o instanceof Summary) {
|
||||
Summary summary = (Summary) o;
|
||||
parent.handleSummary(summary);
|
||||
parent.setWizardResult(summary.getResult());
|
||||
} else if (parent.getDeferredResult() != null) {
|
||||
parent.setWizardResult(o);
|
||||
Runnable r = () -> {
|
||||
if (o instanceof Summary) {
|
||||
Summary summary = (Summary) o;
|
||||
parent.handleSummary(summary);
|
||||
parent.setWizardResult(summary.getResult());
|
||||
} else if (parent.getDeferredResult() != null) {
|
||||
parent.setWizardResult(o);
|
||||
|
||||
// handle result based on which button was pushed
|
||||
parent.getButtonManager().deferredResultFinished(o);
|
||||
}
|
||||
// handle result based on which button was pushed
|
||||
parent.getButtonManager().deferredResultFinished(o);
|
||||
}
|
||||
};
|
||||
invoke(r);
|
||||
@@ -181,19 +164,14 @@ public class NavProgress implements ResultProgressHandle {
|
||||
failMessage = message;
|
||||
isRunning = false;
|
||||
|
||||
Runnable r = new Runnable() {
|
||||
public void run() {
|
||||
// cheap word wrap
|
||||
JLabel comp = new JLabel("<html><body>" + message); // NOI18N
|
||||
comp.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
parent.setCurrentWizardPanel(comp);
|
||||
parent.getTtlLabel().setText(
|
||||
NbBridge
|
||||
.getString("org/netbeans/api/wizard/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Failed")); // NOI18N
|
||||
NavButtonManager bm = parent.getButtonManager();
|
||||
bm.deferredResultFailed(canGoBack);
|
||||
}
|
||||
Runnable r = () -> {
|
||||
// cheap word wrap
|
||||
JLabel comp = new JLabel("<html><body>" + message); // NOI18N
|
||||
comp.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
parent.setCurrentWizardPanel(comp);
|
||||
parent.getTtlLabel().setText(C.i18n("wizard.failed"));
|
||||
NavButtonManager bm = parent.getButtonManager();
|
||||
bm.deferredResultFailed(canGoBack);
|
||||
};
|
||||
invoke(r);
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
/* The contents of this file are subject to the terms of the Common Development
|
||||
and Distribution License (the License). You may not use this file except in
|
||||
compliance with the License.
|
||||
You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
or http://www.netbeans.org/cddl.txt.
|
||||
When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
If applicable, add the following below the CDDL Header, with the fields
|
||||
enclosed by brackets [] replaced by your own identifying information:
|
||||
|
||||
Written by Stanley@StanleyKnutson.com based on code from Tim B.
|
||||
|
||||
/*
|
||||
* The contents of this file are subject to the terms of the Common Development
|
||||
* and Distribution License (the License). You may not use this file except in
|
||||
* compliance with the License.
|
||||
* You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
* or http://www.netbeans.org/cddl.txt.
|
||||
* When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
* and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
* If applicable, add the following below the CDDL Header, with the fields
|
||||
* enclosed by brackets [] replaced by your own identifying information:
|
||||
*
|
||||
* Written by Stanley@StanleyKnutson.com based on code from Tim B.
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jackhuang.hellominecraft.utils.views.wizard.api.displayer;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
@@ -51,11 +51,12 @@ import javax.swing.WindowConstants;
|
||||
import javax.swing.border.Border;
|
||||
import javax.swing.border.CompoundBorder;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import org.jackhuang.hellominecraft.utils.C;
|
||||
import org.jackhuang.hellominecraft.utils.logging.HMCLog;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.api.WizardDisplayer;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.api.WizardResultReceiver;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.modules.InstructionsPanelImpl;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.modules.MergeMap;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.modules.NbBridge;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.DeferredWizardResult;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.ResultProgressHandle;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.Summary;
|
||||
@@ -64,95 +65,85 @@ import org.jackhuang.hellominecraft.utils.views.wizard.spi.WizardPanel;
|
||||
|
||||
/**
|
||||
* Default implementation of WizardDisplayer.
|
||||
* <b><i><font color="red">This class is NOT AN API CLASS. There is no
|
||||
* <b><i><font color="red">This class is NOT AN API CLASS. There is no
|
||||
* commitment that it will remain backward compatible or even exist in the
|
||||
* future. The API of this library is in the packages <code>org.netbeans.api.wizard</code>
|
||||
* and <code>org.netbeans.spi.wizard</code></font></i></b>. <p>Use
|
||||
* future. The API of this library is in the packages
|
||||
* <code>org.netbeans.api.wizard</code>
|
||||
* and <code>org.netbeans.spi.wizard</code></font></i></b>.
|
||||
* <p>
|
||||
* Use
|
||||
* <code>WizardDisplayer.showWizard()</code> or its other static methods to
|
||||
* display wizards in a way which will continue to work over time.
|
||||
*
|
||||
* @author stanley@StanleyKnutson.com
|
||||
* @author Tim Boudreau
|
||||
*/
|
||||
public class WizardDisplayerImpl extends WizardDisplayer
|
||||
{
|
||||
public class WizardDisplayerImpl extends WizardDisplayer {
|
||||
|
||||
ResultProgressHandle progress = null;
|
||||
|
||||
ResultProgressHandle progress = null;
|
||||
JLabel ttlLabel = null;
|
||||
|
||||
JLabel ttlLabel = null;
|
||||
JPanel ttlPanel = null;
|
||||
|
||||
JPanel ttlPanel = null;
|
||||
Wizard wizard = null;
|
||||
|
||||
Wizard wizard = null;
|
||||
JPanel outerPanel = null;
|
||||
|
||||
JPanel outerPanel = null;
|
||||
NavButtonManager buttonManager = null;
|
||||
|
||||
NavButtonManager buttonManager = null;
|
||||
InstructionsPanel instructions = null;
|
||||
|
||||
InstructionsPanel instructions = null;
|
||||
MergeMap settings = null;
|
||||
|
||||
MergeMap settings = null;
|
||||
JPanel inner = null;
|
||||
|
||||
JPanel inner = null;
|
||||
JLabel problem = null;
|
||||
|
||||
JLabel problem = null;
|
||||
Object wizardResult = null;
|
||||
|
||||
Object wizardResult = null;
|
||||
|
||||
WizardResultReceiver receiver = null;
|
||||
WizardResultReceiver receiver = null;
|
||||
|
||||
/**
|
||||
* WizardPanel is the panel returned as the panel to display. Often a
|
||||
* subclass of WizardPanel
|
||||
*/
|
||||
JComponent wizardPanel = null;
|
||||
JComponent wizardPanel = null;
|
||||
|
||||
boolean inSummary = false;
|
||||
boolean inSummary = false;
|
||||
|
||||
DeferredWizardResult deferredResult = null;
|
||||
DeferredWizardResult deferredResult = null;
|
||||
|
||||
/**
|
||||
* Default constructor used by WizardDisplayer static methods.
|
||||
*
|
||||
*/
|
||||
public WizardDisplayerImpl()
|
||||
{
|
||||
public WizardDisplayerImpl() {
|
||||
}
|
||||
|
||||
protected void buildStepTitle()
|
||||
{
|
||||
|
||||
protected void buildStepTitle() {
|
||||
ttlLabel = new JLabel(wizard.getStepDescription(wizard.getAllSteps()[0]));
|
||||
ttlLabel.setBorder(BorderFactory.createCompoundBorder(BorderFactory
|
||||
.createEmptyBorder(5, 5, 12, 5), BorderFactory.createMatteBorder(0, 0, 1, 0, UIManager
|
||||
.getColor("textText")))); // NOI18N
|
||||
ttlPanel = new JPanel()
|
||||
{
|
||||
public void doLayout()
|
||||
{
|
||||
.getColor("textText")))); // NOI18N
|
||||
ttlPanel = new JPanel() {
|
||||
public void doLayout() {
|
||||
Dimension d = ttlLabel.getPreferredSize();
|
||||
if (ttlLabel.getComponentOrientation() == ComponentOrientation.RIGHT_TO_LEFT)
|
||||
{
|
||||
ttlLabel.setBounds(getWidth() - d.width, 0, getWidth(), d.height);
|
||||
}
|
||||
else
|
||||
{
|
||||
ttlLabel.setBounds(0, 0, getWidth(), d.height);
|
||||
}
|
||||
}
|
||||
|
||||
public Dimension getPreferredSize()
|
||||
{
|
||||
public Dimension getPreferredSize() {
|
||||
return ttlLabel.getPreferredSize();
|
||||
}
|
||||
};
|
||||
ttlPanel.add(ttlLabel);
|
||||
Font f = ttlLabel.getFont();
|
||||
if (f == null)
|
||||
{
|
||||
f = UIManager.getFont("controlFont"); // NOI18N
|
||||
}
|
||||
if (f != null)
|
||||
{
|
||||
if (f != null) {
|
||||
f = f.deriveFont(Font.BOLD);
|
||||
ttlLabel.setFont(f);
|
||||
}
|
||||
@@ -161,33 +152,28 @@ public class WizardDisplayerImpl extends WizardDisplayer
|
||||
|
||||
/**
|
||||
* Show a wizard
|
||||
*
|
||||
* @param awizard is the wizard to be displayed
|
||||
* @param bounds for display, may be null for default of 0,0,400,600.
|
||||
*
|
||||
* @param awizard is the wizard to be displayed
|
||||
* @param bounds for display, may be null for default of
|
||||
* 0,0,400,600.
|
||||
* @param helpAction
|
||||
* @param initialProperties - initial values for the map
|
||||
*
|
||||
* @return value of the 'finish' processing
|
||||
* @see org.netbeans.api.wizard.WizardDisplayer#show(org.netbeans.spi.wizard.Wizard, java.awt.Rectangle, javax.swing.Action, java.util.Map)
|
||||
*
|
||||
* @see
|
||||
* org.netbeans.api.wizard.WizardDisplayer#show(org.netbeans.spi.wizard.Wizard,
|
||||
* java.awt.Rectangle, javax.swing.Action, java.util.Map)
|
||||
*/
|
||||
private JPanel createOuterPanel(final Wizard awizard, Rectangle bounds, Action helpAction,
|
||||
Map initialProperties)
|
||||
{
|
||||
Map initialProperties) {
|
||||
|
||||
this.wizard = awizard;
|
||||
|
||||
outerPanel = new JPanel();
|
||||
|
||||
// apply default size
|
||||
// we don't enforce any maximum size
|
||||
if (bounds == null)
|
||||
{
|
||||
bounds = new Rectangle(0,0, 600,400);
|
||||
}
|
||||
|
||||
if (wizard.getAllSteps().length == 0)
|
||||
{
|
||||
throw new IllegalArgumentException("Wizard has no steps"); // NOI18N
|
||||
}
|
||||
|
||||
// initialize the ttl* stuff
|
||||
buildStepTitle();
|
||||
@@ -195,17 +181,16 @@ public class WizardDisplayerImpl extends WizardDisplayer
|
||||
buttonManager = new NavButtonManager(this);
|
||||
|
||||
outerPanel.setLayout(new BorderLayout());
|
||||
|
||||
|
||||
Action kbdCancel = new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JButton b = buttonManager.getCancel();
|
||||
if (b.isEnabled()) {
|
||||
if (b.isEnabled())
|
||||
b.doClick();
|
||||
}
|
||||
}
|
||||
};
|
||||
outerPanel.getInputMap(outerPanel.WHEN_IN_FOCUSED_WINDOW).put(
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel"); //NOI18N
|
||||
outerPanel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW).put(
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel"); //NOI18N
|
||||
outerPanel.getActionMap().put("cancel", kbdCancel); //NOI18N
|
||||
|
||||
instructions = createInstructionsPanel();
|
||||
@@ -232,81 +217,67 @@ public class WizardDisplayerImpl extends WizardDisplayer
|
||||
// introduce the initial properties as if they had been set on page 1
|
||||
// even though they may be defaults for page 2
|
||||
if (initialProperties != null)
|
||||
{
|
||||
settings.putAll(initialProperties);
|
||||
}
|
||||
|
||||
wizardPanel = wizard.navigatingTo(first, settings);
|
||||
String desc = wizard.getLongDescription (first);
|
||||
if (desc != null) {
|
||||
ttlLabel.setText (desc);
|
||||
}
|
||||
String desc = wizard.getLongDescription(first);
|
||||
if (desc != null)
|
||||
ttlLabel.setText(desc);
|
||||
|
||||
inner.add(wizardPanel, BorderLayout.CENTER);
|
||||
|
||||
buttonManager.initializeNavigation();
|
||||
return outerPanel;
|
||||
}
|
||||
|
||||
|
||||
protected InstructionsPanel createInstructionsPanel() {
|
||||
return new InstructionsPanelImpl (wizard);
|
||||
return new InstructionsPanelImpl(wizard);
|
||||
}
|
||||
|
||||
public void install (Container c, Object layoutConstraint, Wizard awizard,
|
||||
Action helpAction, Map initialProperties, WizardResultReceiver receiver) {
|
||||
JPanel pnl = createOuterPanel (awizard, new Rectangle(), helpAction, initialProperties);
|
||||
if (layoutConstraint != null) {
|
||||
if (c instanceof RootPaneContainer) {
|
||||
((RootPaneContainer) c).getContentPane().add (pnl, layoutConstraint);
|
||||
} else {
|
||||
c.add (pnl, layoutConstraint);
|
||||
}
|
||||
} else {
|
||||
if (c instanceof RootPaneContainer) {
|
||||
((RootPaneContainer) c).getContentPane().add (pnl);
|
||||
} else {
|
||||
c.add (pnl);
|
||||
}
|
||||
}
|
||||
|
||||
public void install(Container c, Object layoutConstraint, Wizard awizard,
|
||||
Action helpAction, Map initialProperties, WizardResultReceiver receiver) {
|
||||
JPanel pnl = createOuterPanel(awizard, new Rectangle(), helpAction, initialProperties);
|
||||
if (layoutConstraint != null)
|
||||
if (c instanceof RootPaneContainer)
|
||||
((RootPaneContainer) c).getContentPane().add(pnl, layoutConstraint);
|
||||
else
|
||||
c.add(pnl, layoutConstraint);
|
||||
else if (c instanceof RootPaneContainer)
|
||||
((RootPaneContainer) c).getContentPane().add(pnl);
|
||||
else
|
||||
c.add(pnl);
|
||||
this.receiver = receiver;
|
||||
}
|
||||
|
||||
|
||||
private static boolean warned;
|
||||
|
||||
public Object show(final Wizard awizard, Rectangle bounds, Action helpAction,
|
||||
Map initialProperties) {
|
||||
Map initialProperties) {
|
||||
if (!EventQueue.isDispatchThread() && !warned) {
|
||||
Logger.getLogger(WizardDisplayerImpl.class.getName()).log(Level.WARNING,
|
||||
"show() should be called from the AWT Event Thread. This "
|
||||
+ "call may deadlock - c.f. "
|
||||
+ "http://java.net/jira/browse/WIZARD-33", new Throwable());
|
||||
Logger.getLogger(WizardDisplayerImpl.class.getName()).log(Level.WARNING,
|
||||
"show() should be called from the AWT Event Thread. This "
|
||||
+ "call may deadlock - c.f. "
|
||||
+ "http://java.net/jira/browse/WIZARD-33", new Throwable());
|
||||
warned = true;
|
||||
}
|
||||
createOuterPanel (awizard, bounds, helpAction, initialProperties);
|
||||
createOuterPanel(awizard, bounds, helpAction, initialProperties);
|
||||
Object result = showInDialog(bounds);
|
||||
return result;
|
||||
}
|
||||
|
||||
protected JDialog createDialog()
|
||||
{
|
||||
protected JDialog createDialog() {
|
||||
JDialog dlg;
|
||||
Object o = findLikelyOwnerWindow();
|
||||
if (o instanceof Frame)
|
||||
{
|
||||
dlg = new JDialog((Frame) o);
|
||||
}
|
||||
else if (o instanceof Dialog)
|
||||
{
|
||||
dlg = new JDialog((Dialog) o);
|
||||
}
|
||||
else
|
||||
{
|
||||
dlg = new JDialog();
|
||||
}
|
||||
return dlg;
|
||||
}
|
||||
|
||||
protected Object showInDialog(Rectangle bounds)
|
||||
{
|
||||
protected Object showInDialog(Rectangle bounds) {
|
||||
// TODO: add flag for "showInFrame"
|
||||
|
||||
JDialog dlg = createDialog();
|
||||
@@ -318,45 +289,28 @@ public class WizardDisplayerImpl extends WizardDisplayer
|
||||
dlg.getContentPane().setLayout(new BorderLayout());
|
||||
dlg.getContentPane().add(outerPanel, BorderLayout.CENTER);
|
||||
if (bounds != null)
|
||||
{
|
||||
dlg.setBounds(bounds);
|
||||
}
|
||||
else
|
||||
{
|
||||
dlg.pack();
|
||||
}
|
||||
dlg.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
|
||||
dlg.addWindowListener(new WindowAdapter()
|
||||
{
|
||||
public void windowClosing(WindowEvent e)
|
||||
{
|
||||
if (!(e.getWindow() instanceof JDialog)) {
|
||||
dlg.addWindowListener(new WindowAdapter() {
|
||||
public void windowClosing(WindowEvent e) {
|
||||
if (!(e.getWindow() instanceof JDialog))
|
||||
return;
|
||||
}
|
||||
JDialog dlg = (JDialog) e.getWindow();
|
||||
boolean dontClose = false;
|
||||
if (!wizard.isBusy())
|
||||
{
|
||||
if (!wizard.isBusy()) {
|
||||
DeferredWizardResult defResult;
|
||||
synchronized(WizardDisplayerImpl.this) {
|
||||
synchronized (WizardDisplayerImpl.this) {
|
||||
defResult = deferredResult;
|
||||
}
|
||||
try
|
||||
{
|
||||
try {
|
||||
if (defResult != null && defResult.canAbort())
|
||||
{
|
||||
defResult.abort();
|
||||
}
|
||||
else if (defResult != null && !defResult.canAbort())
|
||||
{
|
||||
dontClose = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (!dontClose && wizard.cancel(settings))
|
||||
{
|
||||
} finally {
|
||||
if (!dontClose && wizard.cancel(settings)) {
|
||||
dlg.setVisible(false);
|
||||
dlg.dispose();
|
||||
}
|
||||
@@ -380,63 +334,58 @@ public class WizardDisplayerImpl extends WizardDisplayer
|
||||
return wizardResult;
|
||||
}
|
||||
|
||||
private Window findLikelyOwnerWindow()
|
||||
{
|
||||
private Window findLikelyOwnerWindow() {
|
||||
return KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusedWindow();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current wizard panel, or null if the currently displayed page
|
||||
* is not a WizardPanel.
|
||||
*
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public WizardPanel getCurrentWizardPanel()
|
||||
{
|
||||
public WizardPanel getCurrentWizardPanel() {
|
||||
JComponent comp = wizardPanel;
|
||||
if (comp instanceof WizardPanel)
|
||||
{
|
||||
return (WizardPanel) comp;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getCurrentStep()
|
||||
{
|
||||
public String getCurrentStep() {
|
||||
return settings.currID();
|
||||
}
|
||||
|
||||
// available in the package only
|
||||
static void checkLegalNavMode(int i)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case Wizard.MODE_CAN_CONTINUE:
|
||||
case Wizard.MODE_CAN_CONTINUE_OR_FINISH:
|
||||
case Wizard.MODE_CAN_FINISH:
|
||||
return;
|
||||
default:
|
||||
throw new IllegalArgumentException("Illegal forward " + // NOI18N
|
||||
"navigation mode: " + i); // NOI18N
|
||||
static void checkLegalNavMode(int i) {
|
||||
switch (i) {
|
||||
case Wizard.MODE_CAN_CONTINUE:
|
||||
case Wizard.MODE_CAN_CONTINUE_OR_FINISH:
|
||||
case Wizard.MODE_CAN_FINISH:
|
||||
return;
|
||||
default:
|
||||
throw new IllegalArgumentException("Illegal forward "
|
||||
+ // NOI18N
|
||||
"navigation mode: " + i); // NOI18N
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* private static final class LDlg extends JDialog { public LDlg() {
|
||||
* } public LDlg (Frame frame) { super (frame); }
|
||||
*
|
||||
* } public LDlg (Frame frame) { super (frame); }
|
||||
*
|
||||
* public LDlg (Dialog dlg) { super (dlg); }
|
||||
*
|
||||
*
|
||||
* public void setVisible (boolean val) { if (!val) { Thread.dumpStack(); }
|
||||
* super.setVisible (val); } }
|
||||
*/
|
||||
|
||||
/**
|
||||
/**
|
||||
* Set the currently displayed panel.
|
||||
* @parm comp is can be anything - it is not required to be a WizardPage or WizardPanel
|
||||
* */
|
||||
public void setCurrentWizardPanel(JComponent comp)
|
||||
{
|
||||
*
|
||||
* @parm comp is can be anything - it is not required to be a WizardPage or
|
||||
* WizardPanel
|
||||
*
|
||||
*/
|
||||
public void setCurrentWizardPanel(JComponent comp) {
|
||||
inner.add(comp, BorderLayout.CENTER);
|
||||
inner.remove(wizardPanel);
|
||||
wizardPanel = comp;
|
||||
@@ -445,37 +394,30 @@ public class WizardDisplayerImpl extends WizardDisplayer
|
||||
inner.repaint();
|
||||
comp.requestFocus();
|
||||
if (!inSummary)
|
||||
{
|
||||
buttonManager.updateButtons();
|
||||
}
|
||||
}
|
||||
|
||||
void handleSummary(Summary summary)
|
||||
{
|
||||
void handleSummary(Summary summary) {
|
||||
inSummary = true;
|
||||
instructions.setInSummaryPage(true);
|
||||
JComponent summaryComp = (JComponent) summary.getSummaryComponent(); // XXX
|
||||
if (summaryComp.getBorder() != null)
|
||||
{
|
||||
if (summaryComp.getBorder() != null) {
|
||||
CompoundBorder b = new CompoundBorder(new EmptyBorder(5, 5, 5, 5), summaryComp
|
||||
.getBorder());
|
||||
.getBorder());
|
||||
summaryComp.setBorder(b);
|
||||
}
|
||||
setCurrentWizardPanel((JComponent) summaryComp); // XXX
|
||||
ttlLabel.setText(NbBridge.getString("org/netbeans/api/wizard/Bundle", // NOI18N
|
||||
WizardDisplayer.class, "Summary")); // NOI18N
|
||||
ttlLabel.setText(C.i18n("wizard.summary"));
|
||||
getButtonManager().setSummaryShowingMode();
|
||||
summaryComp.requestFocus();
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected ResultProgressHandle createProgressDisplay (boolean isUseBusy)
|
||||
{
|
||||
protected ResultProgressHandle createProgressDisplay(boolean isUseBusy) {
|
||||
return new NavProgress(this, isUseBusy);
|
||||
}
|
||||
|
||||
void handleDeferredWizardResult(final DeferredWizardResult r, final boolean inSummary)
|
||||
{
|
||||
|
||||
void handleDeferredWizardResult(final DeferredWizardResult r, final boolean inSummary) {
|
||||
synchronized (this) {
|
||||
deferredResult = r;
|
||||
}
|
||||
@@ -484,56 +426,30 @@ public class WizardDisplayerImpl extends WizardDisplayer
|
||||
Container inst = instructions.getComponent();
|
||||
progress.addProgressComponents(inst);
|
||||
inst.invalidate();
|
||||
if (inst instanceof JComponent) {
|
||||
((JComponent)inst).revalidate();
|
||||
}
|
||||
if (inst instanceof JComponent)
|
||||
((JComponent) inst).revalidate();
|
||||
inst.repaint();
|
||||
Runnable run = new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
Runnable run = new Runnable() {
|
||||
public void run() {
|
||||
if (!EventQueue.isDispatchThread())
|
||||
{
|
||||
try
|
||||
{
|
||||
EventQueue.invokeLater (new Runnable() {
|
||||
public void run() {
|
||||
buttonManager.getWindow()
|
||||
.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
}
|
||||
});
|
||||
try {
|
||||
EventQueue.invokeLater(() -> buttonManager.getWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)));
|
||||
r.start(settings, progress);
|
||||
if (progress.isRunning())
|
||||
{
|
||||
progress.failed("Start method did not inidicate " +
|
||||
"failure or finished in " + r, false);
|
||||
}
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
progress.failed("Start method did not inidicate "
|
||||
+ "failure or finished in " + r, false);
|
||||
|
||||
} finally {
|
||||
try {
|
||||
EventQueue.invokeAndWait(this);
|
||||
}
|
||||
catch (InvocationTargetException ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
} catch (InvocationTargetException | InterruptedException ex) {
|
||||
HMCLog.err("Failed to invoke and wait", ex);
|
||||
return;
|
||||
}
|
||||
catch (InterruptedException ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
return;
|
||||
}
|
||||
finally
|
||||
{
|
||||
} finally {
|
||||
buttonManager.getWindow().setCursor(Cursor.getDefaultCursor());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
synchronized (this) {
|
||||
deferredResult = null;
|
||||
}
|
||||
@@ -541,9 +457,8 @@ public class WizardDisplayerImpl extends WizardDisplayer
|
||||
Container inst = instructions.getComponent();
|
||||
inst.removeAll();
|
||||
inst.invalidate();
|
||||
if (inst instanceof JComponent) {
|
||||
((JComponent)instructions).revalidate();
|
||||
}
|
||||
if (inst instanceof JComponent)
|
||||
((JComponent) instructions).revalidate();
|
||||
inst.repaint();
|
||||
}
|
||||
}
|
||||
@@ -552,123 +467,97 @@ public class WizardDisplayerImpl extends WizardDisplayer
|
||||
runner.start();
|
||||
}
|
||||
|
||||
public void navigateTo(String id)
|
||||
{
|
||||
public void navigateTo(String id) {
|
||||
JComponent comp = wizard.navigatingTo(id, getSettings());
|
||||
String description = wizard.getLongDescription (id);
|
||||
if (description == null) {
|
||||
description = wizard.getStepDescription (id);
|
||||
}
|
||||
String description = wizard.getLongDescription(id);
|
||||
if (description == null)
|
||||
description = wizard.getStepDescription(id);
|
||||
getTtlLabel().setText(description);
|
||||
setCurrentWizardPanel(comp);
|
||||
}
|
||||
|
||||
public NavButtonManager getButtonManager()
|
||||
{
|
||||
public NavButtonManager getButtonManager() {
|
||||
return buttonManager;
|
||||
}
|
||||
|
||||
public synchronized DeferredWizardResult getDeferredResult()
|
||||
{
|
||||
public synchronized DeferredWizardResult getDeferredResult() {
|
||||
return deferredResult;
|
||||
}
|
||||
|
||||
public InstructionsPanel getInstructions()
|
||||
{
|
||||
public InstructionsPanel getInstructions() {
|
||||
return instructions;
|
||||
}
|
||||
|
||||
public boolean isInSummary()
|
||||
{
|
||||
public boolean isInSummary() {
|
||||
return inSummary;
|
||||
}
|
||||
|
||||
public void setInSummary(final boolean state)
|
||||
{
|
||||
public void setInSummary(final boolean state) {
|
||||
inSummary = state;
|
||||
Runnable r = new Runnable() {
|
||||
public void run() {
|
||||
instructions.setInSummaryPage(state);
|
||||
}
|
||||
};
|
||||
if (EventQueue.isDispatchThread()) {
|
||||
Runnable r = () -> instructions.setInSummaryPage(state);
|
||||
if (EventQueue.isDispatchThread())
|
||||
r.run();
|
||||
} else {
|
||||
EventQueue.invokeLater (r);
|
||||
}
|
||||
else
|
||||
EventQueue.invokeLater(r);
|
||||
}
|
||||
|
||||
public JPanel getOuterPanel()
|
||||
{
|
||||
public JPanel getOuterPanel() {
|
||||
return outerPanel;
|
||||
}
|
||||
|
||||
public MergeMap getSettings()
|
||||
{
|
||||
public MergeMap getSettings() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
public JLabel getTtlLabel()
|
||||
{
|
||||
public JLabel getTtlLabel() {
|
||||
return ttlLabel;
|
||||
}
|
||||
|
||||
public JPanel getTtlPanel()
|
||||
{
|
||||
public JPanel getTtlPanel() {
|
||||
return ttlPanel;
|
||||
}
|
||||
|
||||
public Wizard getWizard()
|
||||
{
|
||||
public Wizard getWizard() {
|
||||
return wizard;
|
||||
}
|
||||
|
||||
public JComponent getWizardPanel()
|
||||
{
|
||||
public JComponent getWizardPanel() {
|
||||
return wizardPanel;
|
||||
}
|
||||
|
||||
public Object getWizardResult()
|
||||
{
|
||||
public Object getWizardResult() {
|
||||
return wizardResult;
|
||||
}
|
||||
|
||||
public void setWizardResult(Object wizardResult)
|
||||
{
|
||||
public void setWizardResult(Object wizardResult) {
|
||||
this.wizardResult = wizardResult;
|
||||
if (receiver != null) {
|
||||
if (receiver != null)
|
||||
receiver.finished(wizardResult);
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void setDeferredResult(DeferredWizardResult deferredResult)
|
||||
{
|
||||
public synchronized void setDeferredResult(DeferredWizardResult deferredResult) {
|
||||
this.deferredResult = deferredResult;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Will only be called if there is a WizardResultReceiver - i.e. if the
|
||||
* wizard is being displayed in some kind of custom container. Return
|
||||
* wizard is being displayed in some kind of custom container. Return
|
||||
* true to indicate we should not try to close the parent window.
|
||||
*/
|
||||
*/
|
||||
boolean cancel() {
|
||||
boolean result = receiver != null;
|
||||
if (result) {
|
||||
if (result)
|
||||
receiver.cancelled(settings);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void updateProblem()
|
||||
{
|
||||
void updateProblem() {
|
||||
String prob = wizard.getProblem();
|
||||
problem.setText(prob == null ? " " : prob); // NOI18N
|
||||
if (prob != null && prob.trim().length() == 0)
|
||||
{
|
||||
// Issue 3 - provide ability to disable next w/o
|
||||
// showing the error line
|
||||
prob = null;
|
||||
}
|
||||
Border b = prob == null ? BorderFactory.createEmptyBorder(1, 0, 0, 0) : BorderFactory
|
||||
.createMatteBorder(1, 0, 0, 0, problem.getForeground());
|
||||
|
||||
|
||||
@@ -43,6 +43,8 @@ import javax.swing.CellRendererPane;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JEditorPane;
|
||||
import javax.swing.UIManager;
|
||||
import org.jackhuang.hellominecraft.utils.C;
|
||||
import org.jackhuang.hellominecraft.utils.logging.HMCLog;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.api.displayer.InstructionsPanel;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.Wizard;
|
||||
import org.jackhuang.hellominecraft.utils.views.wizard.spi.WizardObserver;
|
||||
@@ -149,9 +151,9 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
if (img == null)
|
||||
try {
|
||||
img = ImageIO.read(InstructionsPanelImpl.class.getResourceAsStream(
|
||||
"defaultWizard.png")); //NOI18N
|
||||
"/org/jackhuang/hellominecraft/wizard.jpg")); //NOI18N
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
HMCLog.err("Failed to load wizard.jpg, maybe you fucking modified the launcher", ioe);
|
||||
}
|
||||
this.img = img;
|
||||
this.wizard = wizard;
|
||||
@@ -202,9 +204,7 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
steps = wizard.getAllSteps();
|
||||
String steps[] = this.steps;
|
||||
if (inSummaryPage) {
|
||||
String summaryStep = NbBridge.getString(
|
||||
"org/jackhuang/hellominecraft/utils/views/wizard/modules/Bundle", //NOI18N
|
||||
InstructionsPanelImpl.class, "Summary"); //NOI18N
|
||||
String summaryStep = C.i18n("wizard.summary");
|
||||
String[] nue = new String[steps.length + 1];
|
||||
System.arraycopy(steps, 0, nue, 0, steps.length);
|
||||
nue[nue.length - 1] = summaryStep;
|
||||
@@ -217,8 +217,7 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
Font boldFont = f.deriveFont(Font.BOLD);
|
||||
|
||||
g.setFont(boldFont);
|
||||
g.drawString(NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/modules/Bundle", //NOI18N
|
||||
InstructionsPanelImpl.class, "Steps"), x, y); //NOI18N
|
||||
g.drawString(C.i18n("wizard.steps"), x, y);
|
||||
|
||||
int underlineY = ins.top + MARGIN + fm.getAscent() + 3;
|
||||
g.drawLine(x, underlineY, x + (getWidth() - (x + ins.left + MARGIN)),
|
||||
@@ -230,8 +229,6 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
y += h + 10;
|
||||
int first = 0;
|
||||
int stop = steps.length;
|
||||
String elipsis = NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/modules/Bundle", //NOI18N
|
||||
InstructionsPanelImpl.class, "elipsis"); //NOI18N
|
||||
boolean wontFit = y + (h * (steps.length)) > getHeight();
|
||||
if (wontFit) {
|
||||
//try to center the current step
|
||||
@@ -255,33 +252,6 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
stop = rangeEnd;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* if (wontFit) {
|
||||
* int currStepIndex = Arrays.asList (steps).indexOf(currentStep);
|
||||
* if (currStepIndex != -1) { //shouldn't happen
|
||||
* steps = (String[]) steps.clone();
|
||||
* first = Math.max (0, currStepIndex - 2);
|
||||
* if (first != 0) {
|
||||
* if (y + ((currStepIndex - first) * h) > getHeight()) {
|
||||
* //Best effort to keep current step on screen
|
||||
* first++;
|
||||
* }
|
||||
* if (first != currStepIndex) {
|
||||
* steps[first] = elipsis;
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
* if (y + ((stop - first) * h) > bottom) {
|
||||
* int avail = bottom - y;
|
||||
* int willFit = avail / h;
|
||||
* int last = first + willFit - 1;
|
||||
* if (last < steps.length - 1) {
|
||||
* steps[last] = elipsis;
|
||||
* stop = last + 1;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
g.setFont(getFont());
|
||||
g.setColor(getForeground());
|
||||
@@ -298,11 +268,9 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
curr = (i + 1) + ". " + steps[i];
|
||||
else
|
||||
curr = (i + 1) + ". " + (isUndetermined
|
||||
? NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/modules/Bundle", //NOI18N
|
||||
InstructionsPanelImpl.class, "elipsis")
|
||||
: //NOI18N
|
||||
steps[i].equals(elipsis) ? elipsis
|
||||
: wizard.getStepDescription(steps[i])); //NOI18N
|
||||
? elipsis
|
||||
: steps[i].equals(elipsis) ? elipsis
|
||||
: wizard.getStepDescription(steps[i]));
|
||||
else
|
||||
curr = elipsis;
|
||||
if (curr != null) {
|
||||
@@ -313,10 +281,7 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
|
||||
int width = fm.stringWidth(curr);
|
||||
while (width > getWidth() - (ins.left + ins.right) && curr.length() > 5)
|
||||
curr = curr.substring(0, curr.length() - 5)
|
||||
+ NbBridge.getString(
|
||||
"org/jackhuang/hellominecraft/utils/views/wizard/modules/Bundle", //NOI18N
|
||||
InstructionsPanelImpl.class, "elipsis"); //NOI18N
|
||||
curr = curr.substring(0, curr.length() - 5) + elipsis;
|
||||
|
||||
g.drawString(curr, x, y);
|
||||
if (selected)
|
||||
@@ -328,6 +293,8 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
|
||||
private int historicWidth = Integer.MIN_VALUE;
|
||||
|
||||
String elipsis = "...";
|
||||
|
||||
public final Dimension getPreferredSize() {
|
||||
Font f = getFont() != null ? getFont()
|
||||
: UIManager.getFont("controlFont"); //NOI18N
|
||||
@@ -344,8 +311,7 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
int w = Integer.MIN_VALUE;
|
||||
for (int i = 0; i < steps.length; i++) {
|
||||
String desc = i + ". " + (Wizard.UNDETERMINED_STEP.equals(steps[i])
|
||||
? NbBridge.getString("org/jackhuang/hellominecraft/utils/views/wizard/modules/Bundle", //NOI18N
|
||||
InstructionsPanelImpl.class, "elipsis")
|
||||
? elipsis
|
||||
: //NOI18N
|
||||
wizard.getStepDescription(steps[i]));
|
||||
if (desc != null)
|
||||
@@ -414,12 +380,6 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
panel = pnl;
|
||||
if (pnl.getParent() instanceof Accessible)
|
||||
setAccessibleParent((Accessible) pnl.getParent());
|
||||
setAccessibleName(NbBridge.getString(
|
||||
"org/jackhuang/hellominecraft/utils/views/wizard/modules/Bundle", //NOI18N
|
||||
InstructionsPanelImpl.class, "ACN_InstructionsPanel")); //NOI18N
|
||||
setAccessibleDescription(NbBridge.getString(
|
||||
"org/jackhuang/hellominecraft/utils/views/wizard/modules/Bundle", //NOI18N
|
||||
InstructionsPanelImpl.class, "ACSD_InstructionsPanel")); //NOI18N
|
||||
}
|
||||
|
||||
JEditorPane pane;
|
||||
@@ -444,12 +404,10 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String[] s = wizard.getAllSteps();
|
||||
for (int i = 0; i < s.length; i++) {
|
||||
sb.append(wizard.getStepDescription(s[i]));
|
||||
sb.append('\n');
|
||||
}
|
||||
for (String item : s)
|
||||
sb.append(wizard.getStepDescription(item)).append('\n');
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
* The contents of this file are subject to the terms of the Common Development
|
||||
* and Distribution License (the License). You may not use this file except in
|
||||
* compliance with the License.
|
||||
* You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
* or http://www.netbeans.org/cddl.txt.
|
||||
* When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
* and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
* If applicable, add the following below the CDDL Header, with the fields
|
||||
* enclosed by brackets [] replaced by your own identifying information:
|
||||
* "Portions Copyrighted [year] [name of copyright owner]"
|
||||
*/
|
||||
package org.jackhuang.hellominecraft.utils.views.wizard.modules;
|
||||
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
/**
|
||||
* Non API class for accessing a few things in NetBeans via reflection.
|
||||
*
|
||||
* @author Tim Boudreau
|
||||
*/
|
||||
public final class NbBridge {
|
||||
|
||||
private NbBridge() {
|
||||
}
|
||||
|
||||
public static String getString(String path, Class callerType, String key) {
|
||||
return getStringViaResourceBundle(path, key);
|
||||
}
|
||||
|
||||
private static String getStringViaResourceBundle(String path, String key) {
|
||||
return ResourceBundle.getBundle(path).getString(key);
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
@@ -208,14 +208,22 @@ settings.custom=\u81ea\u5b9a\u4e49
|
||||
settings.choose_gamedir=\u9009\u62e9\u6e38\u620f\u8def\u5f84
|
||||
settings.failed_load=\u8bbe\u7f6e\u6587\u4ef6\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u5347\u7ea7\u4e86\u542f\u52a8\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u9519\u8bef\uff0c\u662f\u5426\u6e05\u9664\uff1f
|
||||
|
||||
settings.modpack=\u6574\u5408\u5305
|
||||
settings.modpack.choose=\u9009\u62e9\u8981\u5bfc\u5165\u7684\u6e38\u620f\u6574\u5408\u5305\u6587\u4ef6
|
||||
settings.modpack.install.task=\u5bfc\u5165\u6574\u5408\u5305
|
||||
settings.modpack.install_error=\u5b89\u88c5\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u6574\u5408\u5305\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
|
||||
settings.modpack.save=\u9009\u62e9\u8981\u5bfc\u51fa\u5230\u7684\u6e38\u620f\u6574\u5408\u5305\u4f4d\u7f6e
|
||||
settings.modpack.save.task=\u5bfc\u51fa\u6574\u5408\u5305
|
||||
settings.modpack.export_error=\u5bfc\u51fa\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u60a8\u7684\u6e38\u620f\u6587\u4ef6\u5939\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
|
||||
settings.modpack.enter_name=\u7ed9\u6e38\u620f\u8d77\u4e2a\u4f60\u559c\u6b22\u7684\u540d\u5b57
|
||||
modpack=\u6574\u5408\u5305
|
||||
modpack.choose=\u9009\u62e9\u8981\u5bfc\u5165\u7684\u6e38\u620f\u6574\u5408\u5305\u6587\u4ef6
|
||||
modpack.install.task=\u5bfc\u5165\u6574\u5408\u5305
|
||||
modpack.install_error=\u5b89\u88c5\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u6574\u5408\u5305\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
|
||||
modpack.save=\u9009\u62e9\u8981\u5bfc\u51fa\u5230\u7684\u6e38\u620f\u6574\u5408\u5305\u4f4d\u7f6e
|
||||
modpack.save.task=\u5bfc\u51fa\u6574\u5408\u5305
|
||||
modpack.export_error=\u5bfc\u51fa\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u60a8\u7684\u6e38\u620f\u6587\u4ef6\u5939\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
|
||||
modpack.enter_name=\u7ed9\u6e38\u620f\u8d77\u4e2a\u4f60\u559c\u6b22\u7684\u540d\u5b57
|
||||
modpack.wizard=\u5bfc\u51fa\u6574\u5408\u5305\u5411\u5bfc
|
||||
modpack.wizard.step.1=\u57fa\u672c\u8bbe\u7f6e
|
||||
modpack.wizard.step.1.title=\u8bbe\u7f6e\u6574\u5408\u5305\u7684\u4e3b\u8981\u4fe1\u606f
|
||||
modpack.incorrect_format.no_json=\u6574\u5408\u5305\u683c\u5f0f\u9519\u8bef\uff0cpack.json\u4e22\u5931
|
||||
modpack.incorrect_format.no_jar=\u6574\u5408\u5305\u683c\u5f0f\u9519\u8bef\uff0cpack.json\u4e22\u5931jar\u5b57\u6bb5
|
||||
modpack.cannot_read_version=\u8bfb\u53d6\u6e38\u620f\u7248\u672c\u5931\u8d25
|
||||
modpack.not_a_valid_location=\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u6574\u5408\u5305\u4f4d\u7f6e
|
||||
modpack.warning=<html>\u5728\u5236\u4f5c\u6574\u5408\u5305\u524d\uff0c\u8bf7\u60a8\u786e\u8ba4\u60a8\u9009\u62e9\u7684\u7248\u672c\u53ef\u4ee5\u6b63\u5e38\u542f\u52a8\uff0c<br/>\u5e76\u4fdd\u8bc1\u60a8\u7684Minecraft\u662f\u6b63\u5f0f\u7248\u800c\u975e\u5feb\u7167\u7248\uff0c<br/>\u800c\u4e14\u4e0d\u5e94\u5f53\u5c06\u4e0d\u5141\u8bb8\u975e\u5b98\u65b9\u9014\u5f84\u4f20\u64ad\u7684Mod\u7eb3\u5165\u6574\u5408\u5305\u3002</html>
|
||||
|
||||
mods=Mod\u7ba1\u7406
|
||||
mods.choose_mod=\u9009\u62e9\u6a21\u7ec4
|
||||
@@ -340,5 +348,21 @@ color.red=\u7ea2\u8272
|
||||
color.blue=\u84dd\u8272
|
||||
color.green=\u7eff\u8272
|
||||
color.orange=\u6a59\u8272
|
||||
color.dark_blue=\u6df1\u84dd\u8272
|
||||
color.dark_blue=\u6df1\u84dd\u8272\u5931\u8d25
|
||||
color.purple=\u7d2b\u8272
|
||||
|
||||
wizard.next_>=\u4e0b\u4e00\u6b65 >
|
||||
wizard.next_mnemonic=\u4e0b
|
||||
wizard.<_prev=< \u4e0a\u4e00\u6b65
|
||||
wizard.prev_mnemonic=\u4e0a
|
||||
wizard.finish=\u5b8c\u6210
|
||||
wizard.finish_mnemonic=\u5b8c
|
||||
wizard.cancel=\u53d6\u6d88
|
||||
wizard.cancel_mnemonic=\u53d6
|
||||
wizard.help=\u5e2e\u52a9
|
||||
wizard.help_mnemonic=\u5e2e
|
||||
wizard.close=\u5173\u95ed
|
||||
wizard.close_mnemonic=\u5173
|
||||
wizard.summary=\u6982\u8981
|
||||
wizard.failed=\u5931\u8d25
|
||||
wizard.steps=\u6b65\u9aa4
|
||||
@@ -208,14 +208,22 @@ settings.custom=Custom
|
||||
settings.choose_gamedir=Choose Game Directory
|
||||
settings.failed_load=Failed to load settings file. Remove it?
|
||||
|
||||
settings.modpack=Mod pack
|
||||
settings.modpack.choose=Choose a modpack zip file which you want to import.
|
||||
settings.modpack.install.task=Import the modpack
|
||||
settings.modpack.install_error=Failed to install the modpack, maybe the modpack file is incorrect or failed to manage files.
|
||||
settings.modpack.save=Choose a location which you want to export the game files to.
|
||||
settings.modpack.save.task=Export the modpack
|
||||
settings.modpack.export_error=Failed to export the modpack, maybe the format of your game directory is incorrect or failed to manage files.
|
||||
settings.modpack.enter_name=Give this game a name which is your favorite.
|
||||
modpack=Mod pack
|
||||
modpack.choose=Choose a modpack zip file which you want to import.
|
||||
modpack.install.task=Import the modpack
|
||||
modpack.install_error=Failed to install the modpack, maybe the modpack file is incorrect or failed to manage files.
|
||||
modpack.save=Choose a location which you want to export the game files to.
|
||||
modpack.save.task=Export the modpack
|
||||
modpack.export_error=Failed to export the modpack, maybe the format of your game directory is incorrect or failed to manage files.
|
||||
modpack.enter_name=Give this game a name which is your favorite.
|
||||
modpack.wizard=Exporting the modpack wizard
|
||||
modpack.wizard.step.1=Basic options
|
||||
modpack.wizard.step.1.title=Set the basic options to the modpack.
|
||||
modpack.incorrect_format.no_json=The format of the modpack is incorrect, pack.json is missing.
|
||||
modpack.incorrect_format.no_jar=The format of the modpack is incorrect, pack.json does not have attribute 'jar'
|
||||
modpack.cannot_read_version=Failed to gather the game version
|
||||
modpack.not_a_valid_location=Not a valid modpack location
|
||||
modpack.warning=<html>Before making modpack, you should ensure that your game can launch successfully,<br/>and that your Minecraft is release, not snapshot.<br/>and that it is not allowed to add mods which is not allowed to distribute to the modpack.</html>
|
||||
|
||||
mods=Mods
|
||||
mods.choose_mod=Choose your mods
|
||||
@@ -341,4 +349,20 @@ color.blue=Blue
|
||||
color.green=Green
|
||||
color.orange=Orange
|
||||
color.dark_blue=Dark Blue
|
||||
color.purple=Purple
|
||||
color.purple=Purple
|
||||
|
||||
wizard.next_>=Next >
|
||||
wizard.next_mnemonic=N
|
||||
wizard.<_prev=< Prev
|
||||
wizard.prev_mnemonic=P
|
||||
wizard.finish=Finish
|
||||
wizard.finish_mnemonic=F
|
||||
wizard.cancel=Cancel
|
||||
wizard.cancel_mnemonic=C
|
||||
wizard.help=Help
|
||||
wizard.help_mnemonic=H
|
||||
wizard.close=Close
|
||||
wizard.close_mnemonic=C
|
||||
wizard.summary=Summary
|
||||
wizard.failed=Failed
|
||||
wizard.steps=Steps
|
||||
@@ -208,14 +208,22 @@ settings.custom=\u81ea\u5b9a\u7fa9
|
||||
settings.choose_gamedir=\u9009\u62e9\u6e38\u620f\u8def\u5f84
|
||||
settings.failed_load=\u8a2d\u5b9a\u6587\u4ef6\u52a0\u8f09\u5931\u6557\uff0c\u53ef\u80fd\u662f\u5347\u7d1a\u4e86\u555f\u52d5\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u932f\u8aa4\uff0c\u662f\u5426\u6e05\u9664\uff1f
|
||||
|
||||
settings.modpack=\u61f6\u4eba\u5305
|
||||
settings.modpack.choose=\u9078\u64c7\u8981\u5c0e\u5165\u7684\u904a\u6232\u61f6\u4eba\u5305\u6587\u4ef6
|
||||
settings.modpack.install.task=\u5c0e\u5165\u61f6\u4eba\u5305
|
||||
settings.modpack.install_error=\u5b89\u88dd\u5931\u6557\uff0c\u53ef\u80fd\u662f\u6574\u5408\u5305\u683c\u5f0f\u4e0d\u6b63\u78ba\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u6557
|
||||
settings.modpack.save=\u9078\u64c7\u8981\u5c0e\u51fa\u5230\u7684\u904a\u6232\u61f6\u4eba\u5305\u4f4d\u7f6e
|
||||
settings.modpack.save.task=\u5c0e\u51fa\u61f6\u4eba\u5305
|
||||
settings.modpack.export_error=\u5c0e\u51fa\u5931\u6557\uff0c\u53ef\u80fd\u662f\u60a8\u7684\u904a\u6232\u6587\u4ef6\u593e\u683c\u5f0f\u4e0d\u6b63\u78ba\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u6557
|
||||
settings.modpack.enter_name=\u7d66\u904a\u6232\u8d77\u500b\u4f60\u559c\u6b61\u7684\u540d\u5b57
|
||||
modpack=\u61f6\u4eba\u5305
|
||||
modpack.choose=\u9078\u64c7\u8981\u5c0e\u5165\u7684\u904a\u6232\u61f6\u4eba\u5305\u6587\u4ef6
|
||||
modpack.install.task=\u5c0e\u5165\u61f6\u4eba\u5305
|
||||
modpack.install_error=\u5b89\u88dd\u5931\u6557\uff0c\u53ef\u80fd\u662f\u6574\u5408\u5305\u683c\u5f0f\u4e0d\u6b63\u78ba\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u6557
|
||||
modpack.save=\u9078\u64c7\u8981\u5c0e\u51fa\u5230\u7684\u904a\u6232\u61f6\u4eba\u5305\u4f4d\u7f6e
|
||||
modpack.save.task=\u5c0e\u51fa\u61f6\u4eba\u5305
|
||||
modpack.export_error=\u5c0e\u51fa\u5931\u6557\uff0c\u53ef\u80fd\u662f\u60a8\u7684\u904a\u6232\u6587\u4ef6\u593e\u683c\u5f0f\u4e0d\u6b63\u78ba\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u6557
|
||||
modpack.enter_name=\u7d66\u904a\u6232\u8d77\u500b\u4f60\u559c\u6b61\u7684\u540d\u5b57
|
||||
modpack.wizard=\u5c0e\u51fa\u61f6\u4eba\u5305\u56ae\u5c0e
|
||||
modpack.wizard.step.1=\u57fa\u672c\u8a2d\u5b9a
|
||||
modpack.wizard.step.1.title=\u8a2d\u7f6e\u61f6\u4eba\u5305\u7684\u4e3b\u8981\u4fe1\u606f
|
||||
modpack.incorrect_format.no_json=\u61f6\u4eba\u5305\u683c\u5f0f\u932f\u8aa4\uff0cpack.json\u4e1f\u5931
|
||||
modpack.incorrect_format.no_jar=\u61f6\u4eba\u5305\u683c\u5f0f\u932f\u8aa4\uff0cpack.json\u4e1f\u5931jar\u5b57\u6bb5
|
||||
modpack.cannot_read_version=\u8b80\u53d6\u904a\u6232\u7248\u672c\u5931\u6557
|
||||
modpack.not_a_valid_location=\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u61d2\u4eba\u5305\u4f4d\u7f6e
|
||||
modpack.warning=<html>\u5728\u88fd\u4f5c\u6574\u5408\u5305\u524d,\u8acb\u60a8\u78ba\u8a8d\u60a8\u9078\u64c7\u7684\u7248\u672c\u53ef\u4ee5\u6b63\u5e38\u555f\u52d5,\u200b\u200b<br/>\u4e26\u4fdd\u8b49\u60a8\u7684Minecraft\u662f\u6b63\u5f0f\u7248\u800c\u975e\u5feb\u7167\u7248,<br/>\u800c\u4e14\u4e0d\u61c9\u7576\u5c07\u4e0d\u5141\u8a31\u975e\u5b98\u65b9\u9014\u5f91\u50b3\u64ad\u7684Mod\u7d0d\u5165\u6574\u5408\u5305\u3002 </html>
|
||||
|
||||
mods=Mod\u7ba1\u7406
|
||||
mods.choose_mod=\u9009\u62e9\u6a21\u7ec4
|
||||
@@ -341,4 +349,20 @@ color.blue=\u85cd\u8272
|
||||
color.green=\u7da0\u8272
|
||||
color.orange=\u6a59\u8272
|
||||
color.dark_blue=\u6df1\u85cd\u8272
|
||||
color.purple=\u7d2b\u8272
|
||||
color.purple=\u7d2b\u8272
|
||||
|
||||
wizard.next_>=\u4e0b\u4e00\u6b65 >
|
||||
wizard.next_mnemonic=\u4e0b
|
||||
wizard.<_prev=< \u4e0a\u4e00\u6b65
|
||||
wizard.prev_mnemonic=\u4e0a
|
||||
wizard.finish=\u5b8c\u6210
|
||||
wizard.finish_mnemonic=\u5b8c
|
||||
wizard.cancel=\u53d6\u6d88
|
||||
wizard.cancel_mnemonic=\u53d6
|
||||
wizard.help=\u5e6b\u52a9
|
||||
wizard.help_mnemonic=\u5e6b
|
||||
wizard.close=\u95dc\u9589
|
||||
wizard.close_mnemonic=\u95dc
|
||||
wizard.summary=\u6982\u8981
|
||||
wizard.failed=\u5931\u8d25
|
||||
wizard.steps=\u6b65\u9a5f
|
||||
@@ -208,18 +208,28 @@ settings.custom=\u81ea\u5b9a\u4e49
|
||||
settings.choose_gamedir=\u9009\u62e9\u6e38\u620f\u8def\u5f84
|
||||
settings.failed_load=\u8bbe\u7f6e\u6587\u4ef6\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u5347\u7ea7\u4e86\u542f\u52a8\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u9519\u8bef\uff0c\u662f\u5426\u6e05\u9664\uff1f
|
||||
|
||||
settings.modpack=\u6574\u5408\u5305
|
||||
settings.modpack.choose=\u9009\u62e9\u8981\u5bfc\u5165\u7684\u6e38\u620f\u6574\u5408\u5305\u6587\u4ef6
|
||||
settings.modpack.install.task=\u5bfc\u5165\u6574\u5408\u5305
|
||||
settings.modpack.install_error=\u5b89\u88c5\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u6574\u5408\u5305\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
|
||||
settings.modpack.save=\u9009\u62e9\u8981\u5bfc\u51fa\u5230\u7684\u6e38\u620f\u6574\u5408\u5305\u4f4d\u7f6e
|
||||
settings.modpack.save.task=\u5bfc\u51fa\u6574\u5408\u5305
|
||||
settings.modpack.export_error=\u5bfc\u51fa\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u60a8\u7684\u6e38\u620f\u6587\u4ef6\u5939\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
|
||||
settings.modpack.enter_name=\u7ed9\u6e38\u620f\u8d77\u4e2a\u4f60\u559c\u6b22\u7684\u540d\u5b57
|
||||
modpack=\u6574\u5408\u5305
|
||||
modpack.choose=\u9009\u62e9\u8981\u5bfc\u5165\u7684\u6e38\u620f\u6574\u5408\u5305\u6587\u4ef6
|
||||
modpack.install.task=\u5bfc\u5165\u6574\u5408\u5305
|
||||
modpack.install_error=\u5b89\u88c5\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u6574\u5408\u5305\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
|
||||
modpack.save=\u9009\u62e9\u8981\u5bfc\u51fa\u5230\u7684\u6e38\u620f\u6574\u5408\u5305\u4f4d\u7f6e
|
||||
modpack.save.task=\u5bfc\u51fa\u6574\u5408\u5305
|
||||
modpack.export_error=\u5bfc\u51fa\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u60a8\u7684\u6e38\u620f\u6587\u4ef6\u5939\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
|
||||
modpack.enter_name=\u7ed9\u6e38\u620f\u8d77\u4e2a\u4f60\u559c\u6b22\u7684\u540d\u5b57
|
||||
modpack.wizard=\u5bfc\u51fa\u6574\u5408\u5305\u5411\u5bfc
|
||||
modpack.wizard.step.1=\u57fa\u672c\u8bbe\u7f6e
|
||||
modpack.wizard.step.1.title=\u8bbe\u7f6e\u6574\u5408\u5305\u7684\u4e3b\u8981\u4fe1\u606f
|
||||
modpack.incorrect_format.no_json=\u6574\u5408\u5305\u683c\u5f0f\u9519\u8bef\uff0cpack.json\u4e22\u5931
|
||||
modpack.incorrect_format.no_jar=\u6574\u5408\u5305\u683c\u5f0f\u9519\u8bef\uff0cpack.json\u4e22\u5931jar\u5b57\u6bb5
|
||||
modpack.cannot_read_version=\u8bfb\u53d6\u6e38\u620f\u7248\u672c\u5931\u8d25
|
||||
modpack.not_a_valid_location=\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u6574\u5408\u5305\u4f4d\u7f6e
|
||||
modpack.warning=<html>\u5728\u5236\u4f5c\u6574\u5408\u5305\u524d\uff0c\u8bf7\u60a8\u786e\u8ba4\u60a8\u9009\u62e9\u7684\u7248\u672c\u53ef\u4ee5\u6b63\u5e38\u542f\u52a8\uff0c<br/>\u5e76\u4fdd\u8bc1\u60a8\u7684Minecraft\u662f\u6b63\u5f0f\u7248\u800c\u975e\u5feb\u7167\u7248\uff0c<br/>\u800c\u4e14\u4e0d\u5e94\u5f53\u5c06\u4e0d\u5141\u8bb8\u975e\u5b98\u65b9\u9014\u5f84\u4f20\u64ad\u7684Mod\u7eb3\u5165\u6574\u5408\u5305\u3002</html>
|
||||
|
||||
mods=Mod\u7ba1\u7406
|
||||
mods.choose_mod=\u9009\u62e9\u6a21\u7ec4
|
||||
mods.failed=\u6dfb\u52a0\u5931\u8d25
|
||||
mods.add=\u6dfb\u52a0
|
||||
mods.remove=\u5220\u9664
|
||||
mods.default_information=<html><font color=#c0392b>\u5b89\u88c5Mod\u524d\u4f60\u9700\u8981\u786e\u4fdd\u5df2\u5b89\u88c5Forge\u6216LiteLoader!<br>\u60a8\u53ef\u4ee5\u4ece\u8d44\u6e90\u7ba1\u7406\u5668\u62d6\u52a8mod\u6587\u4ef6\u5230\u5217\u8868\u4e2d\u6765\u6dfb\u52a0mod\uff0c\u540c\u65f6\u4f7f\u7528\u5220\u9664\u952e\u53ef\u5feb\u901f\u5220\u9664\u9009\u4e2dmod<br>\u70b9\u6389mod\u524d\u9762\u7684\u52fe\u53ef\u7981\u7528mod\uff0c\u4e0d\u4f1a\u52a0\u8f7d\uff1b\u9009\u62e9mod\u53ef\u4ee5\u83b7\u53d6mod\u4fe1\u606f</font></html>
|
||||
|
||||
advancedsettings=\u9ad8\u7ea7\u8bbe\u7f6e
|
||||
@@ -236,8 +246,9 @@ advancedsettings.game_dir.default=\u9ed8\u8ba4(.minecraft/)
|
||||
advancedsettings.game_dir.independent=\u5404\u7248\u672c\u72ec\u7acb(.minecraft/versions/<\u7248\u672c\u540d>/,\u9664assets,libraries)
|
||||
advancedsettings.no_jvm_args=\u4e0d\u6dfb\u52a0JVM\u53c2\u6570(\u4f7f\u7528Java9\u65f6\u5fc5\u52fe)
|
||||
advancedsettings.java_args_default=\u542f\u52a8\u5668\u9ed8\u8ba4\u6dfb\u52a0\u7684\u53c2\u6570\uff08\u8bf7\u4e0d\u8981\u91cd\u590d\u6dfb\u52a0\uff09\uff1a-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
|
||||
advancedsettings.wrapper_launcher=\u524d\u7f6e\u542f\u52a8\u6307\u4ee4(\u4e0d\u5fc5\u586b\u5199\uff0c\u5185\u5bb9\u5c06\u52a0\u5728\u542f\u52a8\u811a\u672c\u6700\u524d\uff0c\u5982optirun...)
|
||||
advancedsettings.wrapper_launcher=\u542f\u52a8\u524d\u6267\u884c\u547d\u4ee4(\u4e0d\u5fc5\u586b\u5199\uff0c\u5c06\u5728\u6e38\u620f\u542f\u52a8\u524d\u8c03\u7528)
|
||||
advancedsettings.server_ip=\u76f4\u5165\u670d\u52a1\u5668ip\u5730\u5740(\u4e0d\u5fc5\u586b\u5199\uff0c\u542f\u52a8\u6e38\u620f\u540e\u76f4\u63a5\u8fdb\u5165\u5bf9\u5e94\u670d\u52a1\u5668)
|
||||
advancedsettings.cancel_wrapper_launcher=\u53d6\u6d88\u5305\u88f9\u542f\u52a8\u5668\uff08\u51fa\u73b0\u5947\u602a\u95ee\u9898\u65f6\u53ef\u5c1d\u8bd5\u4f7f\u7528,\u4e0e\u8c03\u8bd5\u6a21\u5f0f\u51b2\u7a81\uff09
|
||||
|
||||
mainwindow.show_log=\u67e5\u770b\u65e5\u5fd7
|
||||
mainwindow.make_launch_script=\u751f\u6210\u542f\u52a8\u811a\u672c
|
||||
@@ -246,7 +257,7 @@ mainwindow.enter_script_name=\u8f93\u5165\u8981\u751f\u6210\u811a\u672c\u7684\u6
|
||||
mainwindow.make_launch_succeed=\u542f\u52a8\u811a\u672c\u5df2\u751f\u6210\u5b8c\u6bd5:
|
||||
mainwindow.no_version=\u672a\u627e\u5230\u4efb\u4f55\u7248\u672c\uff0c\u662f\u5426\u8fdb\u5165\u6e38\u620f\u4e0b\u8f7d\uff1f
|
||||
|
||||
launcher.about=<html>\u9ed8\u8ba4\u80cc\u666f\u56fe\u6765\u81eaLiberty Dome\u670d\u52a1\u5668\u3002<br/>\u5173\u4e8e\u4f5c\u8005\uff1a<br/>\n\u767e\u5ea6ID\uff1ahuanghongxun20<br/>\nmcbbs\uff1ahuanghongxun<br/>\n\u90ae\u7bb1\uff1ahuanghongxun2008@126.com<br/>\nMinecraft Forum ID: klkl6523<br/>\n\u6b22\u8fce\u63d0\u4ea4Bug\u54e6<br/>\nCopyright (c) 2013-2015 huangyuhui.<br/>\u514d\u8d23\u58f0\u660e\uff1aMinecraft\u8f6f\u4ef6\u7248\u6743\u5f52Mojang AB\u6240\u6709\uff0c\u6e38\u620f\u7531\u4e8e\u8bef\u64cd\u4f5c\u672c\u542f\u52a8\u5668\u800c\u4e22\u5931\u6570\u636e\u7684\u6982\u4e0d\u8d1f\u8d23\u3002<br/>\u672c\u542f\u52a8\u5668\u5728GPLv3\u534f\u8bae\u4e0b\u5f00\u6e90:http://github.com/huanghongxun/HMCL/<br/>\u672c\u8f6f\u4ef6\u4f7f\u7528\u4e86\u57fa\u4e8eApache License 2.0\u7684RxJava\u548cGson\u9879\u76ee\uff0c\u611f\u8c22\u8d21\u732e\u8005\u3002</html>
|
||||
launcher.about=<html>\u9ed8\u8ba4\u80cc\u666f\u56fe\u6765\u81eaLiberty Dome\u670d\u52a1\u5668\u3002<br/>\u5173\u4e8e\u4f5c\u8005\uff1a<br/>\n\u767e\u5ea6ID\uff1ahuanghongxun20<br/>\nmcbbs\uff1ahuanghongxun<br/>\n\u90ae\u7bb1\uff1ahuanghongxun2008@126.com<br/>\nMinecraft Forum ID: klkl6523<br/>\n\u6b22\u8fce\u63d0\u4ea4Bug\u54e6<br/>\nCopyright (c) 2013-2015 huangyuhui.<br/>\u514d\u8d23\u58f0\u660e\uff1aMinecraft\u8f6f\u4ef6\u7248\u6743\u5f52Mojang AB\u6240\u6709\uff0c\u6e38\u620f\u7531\u4e8e\u8bef\u64cd\u4f5c\u672c\u542f\u52a8\u5668\u800c\u4e22\u5931\u6570\u636e\u7684\u6982\u4e0d\u8d1f\u8d23\u3002<br/>\u672c\u542f\u52a8\u5668\u5728GPLv3\u534f\u8bae\u4e0b\u5f00\u6e90:https://github.com/huanghongxun/HMCL/<br/>\u672c\u8f6f\u4ef6\u4f7f\u7528\u4e86\u57fa\u4e8eApache License 2.0\u7684RxJava\u548cGson\u9879\u76ee\uff0c\u611f\u8c22\u8d21\u732e\u8005\u3002</html>
|
||||
launcher.download_source=\u4e0b\u8f7d\u6e90
|
||||
launcher.background_location=\u80cc\u666f\u5730\u5740
|
||||
launcher.exit_failed=\u5f3a\u5236\u9000\u51fa\u5931\u8d25\uff0c\u53ef\u80fd\u662fForge 1.7.10\u53ca\u66f4\u9ad8\u7248\u672c\u5bfc\u81f4\u7684\uff0c\u65e0\u6cd5\u89e3\u51b3\u3002
|
||||
@@ -338,4 +349,20 @@ color.blue=\u84dd\u8272
|
||||
color.green=\u7eff\u8272
|
||||
color.orange=\u6a59\u8272
|
||||
color.dark_blue=\u6df1\u84dd\u8272
|
||||
color.purple=\u7d2b\u8272
|
||||
color.purple=\u7d2b\u8272
|
||||
|
||||
wizard.next_>=\u4e0b\u4e00\u6b65 >
|
||||
wizard.next_mnemonic=\u4e0b
|
||||
wizard.<_prev=< \u4e0a\u4e00\u6b65
|
||||
wizard.prev_mnemonic=\u4e0a
|
||||
wizard.finish=\u5b8c\u6210
|
||||
wizard.finish_mnemonic=\u5b8c
|
||||
wizard.cancel=\u53d6\u6d88
|
||||
wizard.cancel_mnemonic=\u53d6
|
||||
wizard.help=\u5e2e\u52a9
|
||||
wizard.help_mnemonic=\u5e2e
|
||||
wizard.close=\u5173\u95ed
|
||||
wizard.close_mnemonic=\u5173
|
||||
wizard.summary=\u6982\u8981
|
||||
wizard.failed=\u5931\u8d25
|
||||
wizard.steps=\u6b65\u9aa4
|
||||
@@ -1,25 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
Next_>=Next >
|
||||
Next_mnemonic=N
|
||||
<_Prev=< Prev
|
||||
Prev_mnemonic=P
|
||||
Finish=Finish
|
||||
Finish_mnemonic=F
|
||||
Cancel=Cancel
|
||||
Cancel_mnemonic=C
|
||||
Help=Help
|
||||
Help_mnemonic=H
|
||||
Close=Close
|
||||
Close_mnemonic=C
|
||||
Summary=Summary
|
||||
Failed=Failed
|
||||
@@ -1,25 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
Next_>=Weiter >
|
||||
Next_mnemonic=W
|
||||
<_Prev=< Zur\u00FCck
|
||||
Prev_mnemonic=Z
|
||||
Finish=Fertig
|
||||
Finish_mnemonic=F
|
||||
Cancel=Abbrechen
|
||||
Cancel_mnemonic=A
|
||||
Help=Hilfe
|
||||
Help_mnemonic=H
|
||||
Close=Schlie\u00DFen
|
||||
Close_mnemonic=S
|
||||
Summary=Zusammenfassung
|
||||
Failed=Fehler
|
||||
@@ -1,30 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
Next_>=\u0395\u03C0\u03CC\u03BC\u03B5\u03BD\u03BF >
|
||||
Next_mnemonic=\u0395
|
||||
<_Prev=< \u03A0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF
|
||||
Prev_mnemonic=\u03A0
|
||||
Finish=\u03A4\u03AD\u03BB\u03BF\u03C2
|
||||
Finish_mnemonic=\u03A4
|
||||
Cancel=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7
|
||||
Cancel_mnemonic=\u0391
|
||||
Help=\u0392\u03BF\u03AE\u03B8\u03B5\u03B9\u03B1
|
||||
Help_mnemonic=\u0392
|
||||
Close=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF
|
||||
Close_mnemonic=\u039A
|
||||
Summary=\u03A0\u03B5\u03C1\u03AF\u03BB\u03B7\u03C8\u03B7
|
||||
Failed=\u0391\u03C0\u03AD\u03C4\u03C5\u03C7\u03B5
|
||||
HELP=\u0392\u039F\u0397\u0398\u0395\u0399\u0391
|
||||
FINISH=\u03A4\u0395\u039B\u039F\u03A3
|
||||
NEXT=\u0395\u03A0\u039F\u039C\u0395\u039D\u039F
|
||||
PREV=\u03A0\u03A1\u039F\u0397\u0393\u039F\u03A5\u039C\u0395\u039D\u039F
|
||||
CANCEL=\u0391\u039A\u03A5\u03A1\u03A9\u03A3\u0397
|
||||
@@ -1,25 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
Next_>=Suivant >
|
||||
Next_mnemonic=S
|
||||
<_Prev=< Pr\u00E9c\u00E9dent
|
||||
Prev_mnemonic=P
|
||||
Finish=Terminer
|
||||
Finish_mnemonic=T
|
||||
Cancel=Annuler
|
||||
Cancel_mnemonic=n
|
||||
Help=Aide
|
||||
Help_mnemonic=A
|
||||
Close=Fermer
|
||||
Close_mnemonic=F
|
||||
Summary=Sommaire
|
||||
Failed=\u00C9chec
|
||||
@@ -1,25 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
Next_>=Avanti >
|
||||
Next_mnemonic=v
|
||||
<_Prev=< Indietro
|
||||
Prev_mnemonic=I
|
||||
Finish=Fine
|
||||
Finish_mnemonic=F
|
||||
Cancel=Annulla
|
||||
Cancel_mnemonic=n
|
||||
Help=Aiuto
|
||||
Help_mnemonic=A
|
||||
Close=Chiudi
|
||||
Close_mnemonic=C
|
||||
Summary=Riassunto
|
||||
Failed=Fallimento
|
||||
@@ -1,25 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
Next_>=Volgende >
|
||||
Next_mnemonic=g
|
||||
<_Prev=< Vorige
|
||||
Prev_mnemonic=r
|
||||
Finish=Be\u00EBindigen
|
||||
Finish_mnemonic=B
|
||||
Cancel=Annuleren
|
||||
Cancel_mnemonic=A
|
||||
Help=Help
|
||||
Help_mnemonic=H
|
||||
Close=Sluiten
|
||||
Close_mnemonic=S
|
||||
Summary=Sammenvatting
|
||||
Failed=Gefaald
|
||||
@@ -1,27 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
Next_>=Pr\u00F3ximo >
|
||||
Next_mnemonic=P
|
||||
<_Prev=< Previs\u00E3o
|
||||
Prev_mnemonic=r
|
||||
Finish=Fim
|
||||
Finish_mnemonic=F
|
||||
Cancel=Cancelar
|
||||
Cancel_mnemonic=C
|
||||
Help=Ajudar
|
||||
Help_mnemonic=A
|
||||
Close=Fechar
|
||||
Close_mnemonic=F
|
||||
Summary=Sum\u00E1rio
|
||||
|
||||
Failed=Falhou
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
Next_>=N\u00E4sta >
|
||||
Next_mnemonic=N
|
||||
<_Prev=< F\u00F6reg\u00E5ende
|
||||
Prev_mnemonic=P
|
||||
Finish=Avsluta
|
||||
Finish_mnemonic=F
|
||||
Cancel=Avbryt
|
||||
Cancel_mnemonic=C
|
||||
Help=Hj\u00E4lp
|
||||
Help_mnemonic=H
|
||||
Close=St\u00E4ng
|
||||
Close_mnemonic=C
|
||||
Summary=Sammanfatning
|
||||
Failed=Misslyckades
|
||||
HELP=HJ\u00C4LP
|
||||
FINISH=AVSLUTA
|
||||
NEXT=N\u00C4STA
|
||||
PREV=F\u00D6REG\u00C5ENDE
|
||||
CANCEL=AVBRYT
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
Cannot_back_out_past_first_entry=Cannot back out past first entry
|
||||
elipsis=...
|
||||
Steps=Steps
|
||||
Summary=Summary
|
||||
ACN_InstructionsPanel=Wizard Step List
|
||||
ACSD_InstructionsPanel=List of the panels in this wizard, which can change \
|
||||
based on the choices made on individual panels within it
|
||||
@@ -1,17 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
elipsis=...
|
||||
Steps=Arbeitsschritte
|
||||
Summary=Zusammenfassung
|
||||
ACN_InstructionsPanel=Arbeitsschritte des Assistenten
|
||||
ACSD_InstructionsPanel=Seiten\u00FCbersicht dieses Assistenten; sie kann sich \u00E4ndern \
|
||||
je nach dem, welche Entscheidungen Sie treffen.
|
||||
@@ -1,26 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
OpenIDE-Module-Name=Wizards API
|
||||
OpenIDE-Module-Display-Category=Infrastructure
|
||||
OpenIDE-Module-Short-Description=Provides the Wizards API
|
||||
OpenIDE-Module-Long-Description=Provides the Wizards API and a basic implementation of it
|
||||
|
||||
Cannot_back_out_past_first_entry=Cannot back out past first entry
|
||||
|
||||
elipsis=...
|
||||
elipsis.=...
|
||||
|
||||
Steps=\u0392\u03AE\u03BC\u03B1\u03C4\u03B1
|
||||
Summary=\u03A0\u03B5\u03C1\u03AF\u03BB\u03B7\u03C8\u03B7
|
||||
|
||||
ACN_InstructionsPanel=\u039A\u03B1\u03C4\u03AC\u03BB\u03BF\u03B3\u03BF\u03C2 \u03B2\u03B7\u03BC\u03AC\u03C4\u03C9\u03BD \u03BF\u03B4\u03B7\u03B3\u03BF\u03CD
|
||||
ACSD_InstructionsPanel=\u039A\u03B1\u03C4\u03AC\u03BB\u03BF\u03B3\u03BF\u03C2 \u03C4\u03C9\u03BD \u03C0\u03AC\u03BD\u03B5\u03BB \u03C3\u03B5 \u03B1\u03C5\u03C4\u03CC\u03BD \u03C4\u03BF\u03BD \u03BF\u03B4\u03B7\u03B3\u03CC, \u03BF \u03BF\u03C0\u03BF\u03AF\u03BF\u03C2 \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03B9 \u03B1\u03BD\u03AC\u03BB\u03BF\u03B3\u03B1 \u03BC\u03B5 \u03C4\u03B9\u03C2 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AD\u03C2 \u03C3\u03C4\u03BF \u03BA\u03AC\u03B8\u03B5 \u03C0\u03AC\u03BD\u03B5\u03BB.
|
||||
@@ -1,18 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
Cannot_back_out_past_first_entry=Cannot back out past first entry
|
||||
elipsis=...
|
||||
Steps=\u00C9tapes
|
||||
Summary=Sommaire
|
||||
ACN_InstructionsPanel=Liste des \u00E9tapes de l'assistant
|
||||
ACSD_InstructionsPanel=La liste des \u00E9tapes de l'assistant \
|
||||
qui peuvent changer selon les choix de l'utilisateur
|
||||
@@ -1,26 +0,0 @@
|
||||
#The contents of this file are subject to the terms of the Common Development
|
||||
#and Distribution License (the License). You may not use this file except in
|
||||
#compliance with the License.
|
||||
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
||||
#or http://www.netbeans.org/cddl.txt.
|
||||
# When distributing Covered Code, include this CDDL Header Notice in each file
|
||||
#and include the License file at http://www.netbeans.org/cddl.txt.
|
||||
#If applicable, add the following below the CDDL Header, with the fields
|
||||
#enclosed by brackets [] replaced by your own identifying information:
|
||||
#"Portions Copyrighted [year] [name of copyright owner]"
|
||||
|
||||
OpenIDE-Module-Name=Wizards API
|
||||
OpenIDE-Module-Display-Category=Infrastructure
|
||||
OpenIDE-Module-Short-Description=Provides the Wizards API
|
||||
OpenIDE-Module-Long-Description=Provides the Wizards API and a basic implementation of it
|
||||
|
||||
Cannot_back_out_past_first_entry=Cannot back out past first entry
|
||||
|
||||
elipsis=...
|
||||
elipsis.=...
|
||||
|
||||
Steps=Steg
|
||||
Summary=Sammanfattning
|
||||
|
||||
ACN_InstructionsPanel=Steg i guiden
|
||||
ACSD_InstructionsPanel=Lista med steg i guiden, som kan \u00E4ndras beroende p\u00E5 valen som g\u00F6rs i indivuduella paneler
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 30 KiB |
BIN
HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/wizard.jpg
Executable file
BIN
HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/wizard.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 5.9 KiB |
Reference in New Issue
Block a user