Skip to content
Snippets Groups Projects
Select Git revision
  • master
1 result

apt.txt

Blame
  • 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;
    	}
    }