Select Git revision
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ReductionRulesChooser.java 2.80 KiB
package de.hhu.ba.yoshikoWrapper.gui;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
@SuppressWarnings("serial")
public class ReductionRulesChooser extends ComfortPanel{
private final JCheckBox useCRule;
private final JCheckBox useCCRule;
private final JCheckBox useACRule;
private final JCheckBox useHERule;
private final JCheckBox usePDRRule;
private final JCheckBox useSNRule;
private final DoubleInputField multFactor;
private final ComfortPanel SNPanel;
public ReductionRulesChooser() {
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
//Initialize subcomponents
useCRule = new JCheckBox("Use Clique Rule");
useCCRule = new JCheckBox("Use Critical-Clique Rule");
useACRule = new JCheckBox("Use Almost-Clique Rule");
useHERule = new JCheckBox("Use Heavy-Edge 3 in 1 Rule");
usePDRRule = new JCheckBox("Use Parameter Dependent Reduction Rule");
useSNRule = new JCheckBox("Use Similar Neighborhood Rule");
multFactor = new DoubleInputField(1, Double.POSITIVE_INFINITY);
multFactor.setText("1.0");
SNPanel = new ComfortPanel();
SNPanel.addAll(new JLabel(LocalizationManager.get("multFactor")),multFactor);
useSNRule.setSelected(true);
useSNRule.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (useSNRule.isSelected()) {
multFactor.setEnabled(true);
}
else {
multFactor.setEnabled(false);
}
}
});
this.addAll(
useCRule,
useCCRule,
useACRule,
useHERule,
usePDRRule,
useSNRule,
SNPanel
);
//By default all reduction rules should be applied
for (Component c :this.getComponents()) {
if (c instanceof JCheckBox) {
((JCheckBox)c).setSelected(true);
}
}
//Create titled border
Border border = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
this.setBorder(BorderFactory.createTitledBorder(border, LocalizationManager.get("redRuleChooserTitle")));
}
/** Creates a 6 Bit bitmask representing the currently selected choice of reduction rules.
* @return
*/
public String getBitMask() {
String ret = "";
ret += (useCRule.isSelected() ? "1" : "0");
ret += (useCCRule.isSelected() ? "1" : "0");
ret += (useACRule.isSelected() ? "1" : "0");
ret += (useHERule.isSelected() ? "1" : "0");
ret += (usePDRRule.isSelected() ? "1" : "0");
ret += (useSNRule.isSelected() ? "1" : "0");
return ret;
}
public double getMultFactor() {
if (useSNRule.isSelected()) {
return multFactor.getValueAsDouble();
}
return 1.0d;
}
}