content: /******************************************************************************
  * Copyright 2013-2016 LASIGE                                                  *
  *                                                                             *
  * 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.                                              *
  *                                                                             *
  *******************************************************************************
  * Visualization options dialog box for the GUI.                               *
  *                                                                             *
  * @author Daniel Faria                                                        *
  ******************************************************************************/
  package aml.ui;
  
  import java.awt.Dialog;
  import java.awt.Dimension;
  import java.awt.GraphicsEnvironment;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.awt.event.KeyEvent;
  import java.util.Vector;
  
  import javax.swing.BoxLayout;
  import javax.swing.JButton;
  import javax.swing.JCheckBox;
  import javax.swing.JComboBox;
  import javax.swing.JDialog;
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  
  import aml.AML;
  import aml.settings.LanguageSetting;
  
  public class ViewOptions extends JDialog implements ActionListener
  {
  	
  //Attributes
  	
  	private static final long serialVersionUID = -3900206021275961468L;
  	private AML aml;
  	private JPanel dialogPanel, languagePanel, directionPanel, classPanel, individualPanel, buttonPanel;
  	private JButton cancel, ok;
  	private JLabel languageLabel, classLabel, individualLabel;
  	private JComboBox<String> languageSelector;
  	private JComboBox<Integer> classSelector, individualSelector;
  	private JCheckBox ancestors, descendants;
  	private final Integer[] DIST = {0,1,2,3,4,5};
      
  //Constructor	
  	
  	public ViewOptions()
  	{
  		super();
  		aml = AML.getInstance();
  		
  		this.setTitle("Graph Options");
  		this.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
  		
  		languageLabel = new JLabel("Label Language:");
  		Vector<String> languages = new Vector<String>(aml.getLanguages());
  		languageSelector = new JComboBox<String>(languages);
  		languageSelector.setSelectedItem(aml.getLabelLanguage());
  		languagePanel = new JPanel();
  		languagePanel.add(languageLabel);
  		languagePanel.add(languageSelector);
  
  		ancestors = new JCheckBox("View Ancestors");
  		ancestors.setMnemonic(KeyEvent.VK_C);
  		ancestors.setSelected(AML.getInstance().showAncestors());
  		descendants = new JCheckBox("View Descendants");
  		descendants.setMnemonic(KeyEvent.VK_C);
  		descendants.setSelected(AML.getInstance().showDescendants());
  		directionPanel = new JPanel();
  		directionPanel.add(ancestors);
  		directionPanel.add(descendants);
  		
  		classLabel = new JLabel("Class extension (edges):");
  		classSelector = new JComboBox<Integer>(DIST);
  		classSelector.setSelectedIndex(AML.getInstance().getClassDistance());
          classPanel = new JPanel();
  		classPanel.add(classLabel);
  		classPanel.add(classSelector);
  		
  		individualLabel = new JLabel("Individual extension (edges):");
  		individualSelector = new JComboBox<Integer>(DIST);
  		individualSelector.setSelectedIndex(AML.getInstance().getIndividualDistance());
  		individualPanel = new JPanel();
  		individualPanel.add(individualLabel);
  		individualPanel.add(individualSelector);
  
  		cancel = new JButton("Cancel");
  		cancel.setPreferredSize(new Dimension(70,28));
  		cancel.addActionListener(this);
  		ok = new JButton("OK");
  		ok.setPreferredSize(new Dimension(70,28));
  		ok.addActionListener(this);
  		buttonPanel = new JPanel();
  		buttonPanel.add(cancel);
  		buttonPanel.add(ok);
  		
  		dialogPanel = new JPanel();
  		dialogPanel.setPreferredSize(new Dimension(300,150));
  		dialogPanel.setLayout(new BoxLayout(dialogPanel, BoxLayout.PAGE_AXIS));
  		if(!aml.getLanguageSetting().equals(LanguageSetting.SINGLE))
  			dialogPanel.add(languagePanel);
  		dialogPanel.add(directionPanel);
  		dialogPanel.add(classPanel);
  		dialogPanel.add(individualPanel);
  		dialogPanel.add(buttonPanel);
  		
  		add(dialogPanel);
          
          this.pack();
  		GraphicsEnvironment g = GraphicsEnvironment.getLocalGraphicsEnvironment();
  		int left = g.getCenterPoint().x - (int)(this.getPreferredSize().width / 2);
  		this.setLocation(left, 0);
          this.setVisible(true);
  	}
  
  //Public Methods
  	
  	@Override
  	public void actionPerformed(ActionEvent e)
  	{
  		Object o = e.getSource();
  		if(o == cancel)
  		{
  			this.dispose();
  		}
  		else if(o == ok)
  		{
  			aml.setViewOptions(ancestors.isSelected(),descendants.isSelected(),
  					(Integer)classSelector.getSelectedItem(),(Integer)individualSelector.getSelectedItem());
  			if(!aml.getLanguageSetting().equals(LanguageSetting.SINGLE))
  				aml.setLabelLanguage((String)languageSelector.getSelectedItem());
  			this.dispose();
  		}
  	}
  }