Browse Source

Merge branch 'BP_master' of
git@git.tk.informatik.tu-darmstadt.de:carlos.garcia/praktikum-holons.git
into BP_master

Andreas T. Meyer-Berg 6 years ago
parent
commit
66e6430bf5
2 changed files with 55 additions and 30 deletions
  1. 18 12
      src/ui/view/GUI.java
  2. 37 18
      src/ui/view/TimePanel.java

+ 18 - 12
src/ui/view/GUI.java

@@ -87,14 +87,14 @@ public class GUI implements CategoryListener {
 	
 	
 	
-	private final JCheckBox consoleLogCheckBox = new JCheckBox(
+	private final JCheckBoxMenuItem consoleLogCheckBox = new JCheckBoxMenuItem(
 			"Show program console log");
-	private final JCheckBox useFlexibleDevicesCheckBox = new JCheckBox(
+	private final JCheckBoxMenuItem useFlexibleDevicesCheckBox = new JCheckBoxMenuItem(
 			"Automatically use flexible devices");
 	/** checked if supplyBars should be shown */
-	private final JCheckBox showSupplyBarsCheckBox = new JCheckBox(
+	private final JCheckBoxMenuItem showSupplyBarsCheckBox = new JCheckBoxMenuItem(
 			"Show supply bars.");
-	private final JCheckBox showTooltipsCheckBox = new JCheckBox(
+	private final JCheckBoxMenuItem showTooltipsCheckBox = new JCheckBoxMenuItem(
 			"Show tooltips.");
 	/** menu for the different fairness Models */
 	private final JMenu mnFairnessModel = new JMenu("Fairness Model");
@@ -107,7 +107,7 @@ public class GUI implements CategoryListener {
 	private final JMenuItem mntmOpen = new JMenuItem("Open");
 	private final JMenuItem mntmNew = new JMenuItem("New");
 	private final JMenuItem mntmSave = new JMenuItem("Save");
-	private final JMenuItem mntmCanvasSize = new JMenuItem("View Size");
+	private final JMenuItem mntmCanvasSize = new JMenuItem("Set View Size");
 	private final JMenuItem mntmBackground = new JMenuItem("Background Image");
 	private final JMenuItem mntmSplitView = new JMenuItem("Split View");
 	private final JSplitPane splitPane = new JSplitPane();
@@ -914,11 +914,13 @@ public class GUI implements CategoryListener {
 			canvas.repaint();
 
 			// Update UpperNodes
-				Component canvasOrUpperNodeCanvas = getScrollPaneFromTabbedPane()
-						.getViewport().getComponent(0);
-				if (canvasOrUpperNodeCanvas != null
-						&& canvasOrUpperNodeCanvas instanceof UpperNodeCanvas) {
-					((UpperNodeCanvas) canvasOrUpperNodeCanvas).repaint();
+				JScrollPane spane = getScrollPaneFromTabbedPane();
+				if(spane != null){
+					Component canvasOrUpperNodeCanvas = spane.getViewport().getComponent(0);
+					if (canvasOrUpperNodeCanvas != null
+							&& canvasOrUpperNodeCanvas instanceof UpperNodeCanvas) {
+						((UpperNodeCanvas) canvasOrUpperNodeCanvas).repaint();
+					}
 				}
 			});
 		
@@ -2076,7 +2078,8 @@ public class GUI implements CategoryListener {
 		mItemBattery.addActionListener(actionEvent -> {
 			new NewPopUp(controller,Option.Battery, frmCyberPhysical);
 		});
-		btnAdd.addActionListener(actionEvent -> btnAddPopUp.show(btnAdd, 0, 0));
+		btnAdd.addActionListener(actionEvent -> btnAddPopUp.show(btnAdd, -1, +20));
+		btnAdd.setToolTipText("Add a new Category or Item to the library.");
 		toolBar.add(btnAdd);
 		/**
 		 * Help Menu Action Listeners
@@ -3019,12 +3022,15 @@ public class GUI implements CategoryListener {
 
 	private JScrollPane getScrollPaneFromTabbedPane(int index) {
 		Component upperLevelSelectedComponent;
+		if(tabTemp == null)
+		{
+			return null;
+		}
 		if (index == -1) {
 			upperLevelSelectedComponent = tabTemp.getSelectedComponent();
 		} else {
 			upperLevelSelectedComponent = tabTemp.getComponentAt(index);
 		}
-
 		if (upperLevelSelectedComponent instanceof JTabbedPane) {
 			Component nextLevel = ((JTabbedPane) upperLevelSelectedComponent).getSelectedComponent();
 			if(nextLevel instanceof JPanel)

+ 37 - 18
src/ui/view/TimePanel.java

@@ -34,13 +34,14 @@ public class TimePanel extends JPanel implements ActionListener{
 	
 	final JButton timeBackwardBtn = new JButton();
 	JTextField iterationsField;
-	final JLabel iterationsLabel=new JLabel("  Iterations  ");
+	final JLabel iterationsLabel=new JLabel("Iterations:" , SwingConstants.CENTER);
+	JLabel hint = new JLabel("Invalid", SwingConstants.RIGHT);
 	private final JPanel btnAndSpeedPanel = new JPanel();
 	private final JPanel speedPanel = new JPanel();
 	private final JPanel timeBtnPanel = new JPanel();
 	private final JPanel iterationsPanel=new JPanel();
 	private final JPanel timePanel=new JPanel();
-	private LabelHint iterationsLblHint;
+	//private LabelHint iterationsLblHint;
 	JSlider timeSlider = new JSlider() {
 		/**
 		 *
@@ -275,34 +276,44 @@ public class TimePanel extends JPanel implements ActionListener{
 		btnAndSpeedPanel.setBorder(null);
 		btnAndSpeedPanel.add(timeBtnPanel, BorderLayout.NORTH);
 		btnAndSpeedPanel.add(speedPanel, BorderLayout.CENTER);
-		iterationsPanel.setLayout(new GridLayout(3,1));
-		iterationsPanel.add(iterationsLabel, BorderLayout.NORTH);
-		iterationsLblHint=new LabelHint(iterationsLabel);
+		iterationsPanel.setLayout(new GridBagLayout());
+		GridBagConstraints c = new GridBagConstraints();
+		c.anchor = GridBagConstraints.CENTER;
+		c.fill = GridBagConstraints.HORIZONTAL;
+		c.gridx = 0;
+		c.gridy = 0;
+		iterationsPanel.add(iterationsLabel, c);
+		//iterationsLblHint=new LabelHint(iterationsLabel);
+		hint.setForeground(Color.red);
+		hint.setText(" ");
 		iterationsField=new JTextField(6);//Considering hundreds of thousands in an extreme case
 		iterationsField.setText(""+cont.getModel().getIterations());
+		iterationsField.setToolTipText("0-" + MAX_ITERATIONS  );
 		iterationsField.addActionListener(this);
 		iterationsField.addCaretListener((e)->
 			{
 				try{
 					int a=Integer.parseInt(iterationsField.getText());
 					iterationsField.setBackground(Color.WHITE);//red stings
-					if(
-							a!=
-							SingletonControl
-								.getInstance()
-									.getControl()
-										.getModel()
-											.getIterations()
-					  )iterationsLblHint.go("Press ENTER");
+					//this.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "like Enter")); that is lagging
+					hint.setText(" ");
 				}catch(NumberFormatException n){
-					iterationsLblHint.go("Invalid");
 					iterationsField.setBackground(GUI.PALE_RED);//red stings
+					hint.setText("Invalid");
 				}
 			}
 		);
-		iterationsPanel.add(iterationsField);
-		iterationsPanel.add(new JLabel(), BorderLayout.SOUTH);
-		timePanel.setLayout(new BorderLayout());
+		iterationsField.addFocusListener(new java.awt.event.FocusAdapter() {
+			    public void focusLost (java.awt.event.FocusEvent evt) {
+			    	updateIterationsInput();
+			    }
+			});
+		c.gridy = 1;
+		iterationsPanel.add(iterationsField, c);
+		c.gridy = 2;
+		iterationsPanel.add(hint, c);
+		//iterationsPanel.add(new JLabel(), BorderLayout.SOUTH);
+		timePanel.setLayout(new BorderLayout());;
 		timePanel.add(iterationsPanel, BorderLayout.WEST);
 		timePanel.add(timeSlider, BorderLayout.CENTER);
 		this.add(btnAndSpeedPanel, BorderLayout.WEST);
@@ -354,9 +365,17 @@ public class TimePanel extends JPanel implements ActionListener{
 
 	@Override
 	public void actionPerformed(ActionEvent arg0) {//I dislike anon classes.
+		updateIterationsInput();
+	}
+	/**
+	 *  Update the Text field and apply valid changes to update Iterations from to model.
+	 *  <p>
+	 *  Executed by user input.
+	 */
+	private void updateIterationsInput() {
 		try{
 			int iterations=Integer.parseInt(iterationsField.getText());
-			iterationsLblHint.reset();
+			//iterationsLblHint.reset();
 			boolean resetField=true;
 			if(iterations<1)iterations=1;
 			else if(iterations>MAX_ITERATIONS)iterations=MAX_ITERATIONS;