Package gov.nasa.arc.mct.fastplot.bridge

Source Code of gov.nasa.arc.mct.fastplot.bridge.TestPlotLegends

/*******************************************************************************
* Mission Control Technologies, Copyright (c) 2009-2012, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* The MCT platform is 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.
*
* MCT includes source code licensed under additional open source licenses. See
* the MCT Open Source Licenses file included with this distribution or the About
* MCT Licenses dialog available at runtime from the MCT Help menu for additional
* information.
*******************************************************************************/
package gov.nasa.arc.mct.fastplot.bridge;

import gov.nasa.arc.mct.fastplot.utils.AbbreviatingPlotLabelingAlgorithm;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JPanel;

import org.testng.Assert;
import org.testng.annotations.Test;

import plotter.xy.LinearXYAxis;
import plotter.xy.LinearXYPlotLine;
import plotter.xy.XYDimension;

public class TestPlotLegends {

  private static final String DATA_SET_1_NAME = "DataSet1";
  private static final String DATA_SET_2_NAME = "DataSet2";
 
  private static final String DATA_SET_1_LEGEND = "DataSet1Leg";
  private static final String DATA_SET_2_LEGEND = "DataSet2Leg";

  AbbreviatingPlotLabelingAlgorithm plotLabelingAlgorithm = new AbbreviatingPlotLabelingAlgorithm();

  @Test
  public void testLegendsCreatedForPlot() {
   
    // Plan: part 1: create a plot and add two data series to it then check that
    // two legends are created with the correct labeling.
   
    // Plan: part 2 Simulate mouse movement into
    // one data series and test that plot lines and legend labels are correctly highlighted
   
    plotLabelingAlgorithm.setPanelOrWindowTitle("ABC 123");
   
    // Setup plot
    PlotView testPlot = new PlotView.Builder(PlotterPlot.class).build();
    // Add a data sets
    testPlot.addDataSet(DATA_SET_1_NAME, "\n" + DATA_SET_1_LEGEND);
    testPlot.addDataSet(DATA_SET_2_NAME, "\n" + DATA_SET_2_LEGEND);
   
      LegendManager legendPanel = ((PlotterPlot) testPlot.getLastPlot()).getLegendManager();
     
      // Part 1
     
      // Plot must have a legend panel.
    Assert.assertNotNull(legendPanel);
    Assert.assertTrue(legendPanel.getComponents().length == 1); // legends only have one component - inner panel.
   
    JPanel innerPanel = (JPanel) legendPanel.getComponent(0)
    List<LegendEntry> legendEntries = new ArrayList<LegendEntry>();
   
    // Extract the legend entries for the legend panel.
     for (Component component: innerPanel.getComponents()) {
          if (component instanceof LegendEntry) {
            legendEntries.add((LegendEntry) component);
          }
     }
    
     Assert.assertTrue(legendEntries.size() == 2); // one for each data set.
    
     // Part 2.
    
     LegendEntry legendEntry1 = legendEntries.get(0);
     LegendEntry legendEntry2 = legendEntries.get(1);
    
     Assert.assertFalse(legendEntry1.selected);
     Assert.assertFalse(legendEntry2.selected);
    
     // Move mouse into legend entry.
       MouseEvent evt = new MouseEvent(legendEntry1, 1, 0, 0, legendEntry1.getX() + 1, legendEntry1.getY(), 0, false);
     legendEntry1.mouseEntered(evt);   
       Assert.assertTrue(legendEntry1.selected);
       Assert.assertFalse(legendEntry2.selected);
      
       // Checks that legendEntry mouse entered hover over then toolTipText is set.
       if (legendEntry1.selected)
         Assert.assertNotNull(legendEntry1.getToolTipText());
      
       // Checks again for MouseEvent for setToolTipText
       Assert.assertNotNull(legendEntry1.getToolTipText(evt));
 
       // Move mouse out of legend entry.
       legendEntry1.mouseExited(new MouseEvent(legendEntry1, 1, 0, 0, legendEntry1.getX() + 1, legendEntry1.getY(), 0, false));   
       Assert.assertFalse(legendEntry1.selected);
     Assert.assertFalse(legendEntry2.selected);
     
  }

   @Test
  public void testLegendsNaming() {
   
    final String BaseDisplayName = "Hello World";
    plotLabelingAlgorithm.setPanelOrWindowTitle(BaseDisplayName);
    AbbreviatingPlotLabelingAlgorithm.globalContextLabels.clear();
   
    // Setup plot
    PlotView testPlot = new PlotView.Builder(PlotterPlot.class).build();
    // Add a data sets
    testPlot.addDataSet(BaseDisplayName, BaseDisplayName + "\n" + "Leg");

   
      LegendManager legendPanel = ((PlotterPlot) testPlot.getLastPlot()).getLegendManager();
     
      // Part 1
     
      // Plot must have a legend panel.
    Assert.assertNotNull(legendPanel);
    Assert.assertTrue(legendPanel.getComponents().length == 1); // legends only have one component - inner panel.
   
    JPanel innerPanel = (JPanel) legendPanel.getComponent(0)
    List<LegendEntry> legendEntries = new ArrayList<LegendEntry>();
   
    // Extract the legend entries for the legend panel.
     for (Component component: innerPanel.getComponents()) {
          if (component instanceof LegendEntry) {
            legendEntries.add((LegendEntry) component);
          }
     }
    
     Assert.assertTrue(legendEntries.size() == 1); // one for each data set.
    
     // Part 2.
    
     LegendEntry legendEntry1 = legendEntries.get(0);
    
     Assert.assertEquals(legendEntry1.getComputedBaseDisplayName(), BaseDisplayName,
         "legend entry whose base display name would result in a empty plot label should not be fully removed");
  }

  @Test
  public void testPlotLegendBaseDisplayNameTruncation() {
    final String panelOrWindowTitleTest = "DEF";
    final String canvasPanelTitleTest = "123";

    plotLabelingAlgorithm.setPanelOrWindowTitle(panelOrWindowTitleTest);
    Assert.assertTrue(plotLabelingAlgorithm.getPanelOrWindowTitle().equals(panelOrWindowTitleTest));
   
    plotLabelingAlgorithm.setCanvasPanelTitle(canvasPanelTitleTest);
    Assert.assertTrue(plotLabelingAlgorithm.getCanvasPanelTitle().equals(canvasPanelTitleTest));
   
    LegendEntry testEntry = new LegendEntry(Color.white, Color.white, new Font("Arial", Font.PLAIN, 12), new AbbreviatingPlotLabelingAlgorithm());
    testEntry.setPlot(new LinearXYPlotLine(new LinearXYAxis(XYDimension.X), new LinearXYAxis(XYDimension.Y), XYDimension.X));
   
    // Empty string.
    testEntry.setBaseDisplayName("");
    Assert.assertTrue(testEntry.getBaseDisplayNameLabel().equalsIgnoreCase(""));
   
    // No line break
    testEntry.setBaseDisplayName("Legend Text Legend Text");
    Assert.assertTrue(testEntry.getBaseDisplayNameLabel().equalsIgnoreCase("Legend Text Legend Text"));
   
    // Modified for testing labeling algorithm
    testEntry.setBaseDisplayName("AB_C");
    Assert.assertTrue(testEntry.getFullBaseDisplayName().equalsIgnoreCase("AB C"));
   
    testEntry.setBaseDisplayName("A_B_C");
    Assert.assertTrue(testEntry.getFullBaseDisplayName().equalsIgnoreCase("A B C"));
   
    testEntry.setBaseDisplayName("ABC_DEF");
    Assert.assertTrue(testEntry.getFullBaseDisplayName().equalsIgnoreCase("ABC DEF"));
   
    List<String> identifiers = new ArrayList<String>();
    List<String> contextLabels = new ArrayList<String>();
   
    identifiers.add("ABC_DEF_GHIJ");
    contextLabels.add(plotLabelingAlgorithm.getPanelOrWindowTitle())
    Assert.assertTrue(plotLabelingAlgorithm.computeLabel(identifiers, contextLabels).equals("ABC GHIJ"));
   
    identifiers.clear();
    identifiers.add("ABC_DEF_123_BBB");
    contextLabels.add(plotLabelingAlgorithm.getPanelOrWindowTitle());
    contextLabels.add(plotLabelingAlgorithm.getCanvasPanelTitle())
    Assert.assertTrue(plotLabelingAlgorithm.computeLabel(identifiers, contextLabels).equals("ABC BBB"));
   
  }
 
}
TOP

Related Classes of gov.nasa.arc.mct.fastplot.bridge.TestPlotLegends

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.