/*
*
* Copyright 2014 http://Bither.net
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package net.bither.viewsystem.froms;
import net.bither.BitherSetting;
import net.bither.fonts.AwesomeIcon;
import net.bither.languages.MessageKey;
import net.bither.platform.builder.OSUtils;
import net.bither.utils.LocaliserUtils;
import net.bither.utils.SystemUtil;
import net.bither.viewsystem.base.Labels;
import net.bither.viewsystem.base.Panels;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
import java.awt.event.ActionEvent;
public class VanityOptionPanel extends WizardPanel {
public interface IVanityOptionListener {
public void selectOption(BitherSetting.ECKeyType ecKeyType
, int threadNum);
public boolean useOpenCl();
}
private JSpinner spinnerCount;
private IVanityOptionListener vanityOptionListener;
private BitherSetting.ECKeyType ecKeyType = BitherSetting.ECKeyType.Compressed;
private JCheckBox compressedCheckBox;
public VanityOptionPanel(final IVanityOptionListener vanityOptionListener) {
super(MessageKey.vanity_address_option, AwesomeIcon.FA_LIST);
this.vanityOptionListener = vanityOptionListener;
setOkAction(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
int targetCount = 0;
if (!vanityOptionListener.useOpenCl() && spinnerCount != null) {
targetCount = Integer.valueOf(spinnerCount.getValue().toString());
}
if (!compressedCheckBox.isSelected()) {
ecKeyType = BitherSetting.ECKeyType.UNCompressed;
}
if (vanityOptionListener != null) {
vanityOptionListener.selectOption(ecKeyType, targetCount);
}
closePanel();
}
});
}
@Override
public void initialiseContent(JPanel panel) {
panel.setLayout(new MigLayout(
Panels.migXYLayout(),
"[]", // Column constraints
"[][][][]80[]20[]" // Row constraints
));
compressedCheckBox = new JCheckBox();
compressedCheckBox.setSelected(true);
compressedCheckBox.setText(LocaliserUtils.getString("compressed_private_key"));
panel.add(compressedCheckBox, "align center,shrink,wrap");
if (OSUtils.isWindows() && SystemUtil.isSystem32()) {
ecKeyType = BitherSetting.ECKeyType.UNCompressed;
compressedCheckBox.setSelected(false);
compressedCheckBox.setEnabled(false);
}
if (vanityOptionListener != null && !vanityOptionListener.useOpenCl()) {
panel.add(getSelectThreadsCount(), "align center,shrink,wrap");
}
}
private JPanel getSelectThreadsCount() {
JPanel panel = Panels.newPanel(new MigLayout(Panels.migXYLayout(),
"[][]", // Column constraints
"[]" // Row constraints))
));
spinnerCount = new JSpinner();
JLabel label = Labels.newValueLabel(LocaliserUtils.getString("thread_count"));
panel.add(label, "align right,shrink ");
panel.add(spinnerCount, "align center,shrink");
int cpuCount = SystemUtil.getAvailableProcessors();
Integer value = new Integer(cpuCount);
Integer min = new Integer(1);
Integer max = new Integer(cpuCount);
Integer step = new Integer(1);
SpinnerNumberModel model = new SpinnerNumberModel(value, min, max, step);
spinnerCount.setModel(model);
return panel;
}
}