Example usage for org.jfree.chart.axis ValueAxis setLowerMargin

List of usage examples for org.jfree.chart.axis ValueAxis setLowerMargin

Introduction

In this page you can find the example usage for org.jfree.chart.axis ValueAxis setLowerMargin.

Prototype

public void setLowerMargin(double margin) 

Source Link

Document

Sets the lower margin for the axis (as a percentage of the axis range) and sends an AxisChangeEvent to all registered listeners.

Usage

From source file:logdruid.ui.chart.GraphPanel.java

public void load(JPanel panel_2) {
    startDateJSpinner = (JSpinner) panel_2.getComponent(2);
    endDateJSPinner = (JSpinner) panel_2.getComponent(3);
    // scrollPane.setV
    panel.removeAll();/* w w w  .  j  a v  a  2 s.  c  om*/
    Dimension panelSize = this.getSize();
    add(scrollPane, BorderLayout.CENTER);
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
    // scrollPane.set trying to replace scroll where it was
    JCheckBox relativeCheckBox = (JCheckBox) panel_2.getComponent(5);
    estimatedTime = System.currentTimeMillis() - startTime;
    logger.info("gathering time: " + estimatedTime);
    startTime = System.currentTimeMillis();
    //   Map<Source, Map<String, MineResult>>
    Map<Source, Map<String, MineResult>> treeMap = new TreeMap<Source, Map<String, MineResult>>(
            mineResultSet.mineResults);
    Iterator mineResultSetIterator = treeMap.entrySet().iterator();
    int ite = 0;
    logger.debug("mineResultSet size: " + mineResultSet.mineResults.size());
    while (mineResultSetIterator.hasNext()) {
        final Map.Entry pairs = (Map.Entry) mineResultSetIterator.next();
        logger.debug("mineResultSet key/source: " + ((Source) pairs.getKey()).getSourceName());
        JCheckBox checkBox = (JCheckBox) panel_1.getComponent(ite++);
        logger.debug("checkbox: " + checkBox.getText() + ", " + checkBox.isSelected());
        if (checkBox.isSelected()) {

            Map mrArrayList = (Map<String, MineResult>) pairs.getValue();
            ArrayList<String> mineResultGroup = new ArrayList<String>();
            Set<String> mrss = mrArrayList.keySet();

            mineResultGroup.addAll(mrss);
            Collections.sort(mineResultGroup, new AlphanumComparator());
            Iterator mrArrayListIterator = mineResultGroup.iterator();
            while (mrArrayListIterator.hasNext()) {

                String key = (String) mrArrayListIterator.next();
                logger.debug(key);
                final MineResult mr = (MineResult) mrArrayList.get(key);
                Map<String, ExtendedTimeSeries> statMap = mr.getStatTimeseriesMap();
                Map<String, ExtendedTimeSeries> eventMap = mr.getEventTimeseriesMap();
                // logger.info("mineResultSet hash size: "
                // +mr.getTimeseriesMap().size());
                // logger.info("mineResultSet hash content: " +
                // mr.getStatTimeseriesMap());
                logger.debug("mineResultSet mr.getStartDate(): " + mr.getStartDate()
                        + " mineResultSet mr.getEndDate(): " + mr.getEndDate());
                logger.debug("mineResultSet (Date)jsp.getValue(): " + (Date) startDateJSpinner.getValue());
                logger.debug("mineResultSet (Date)jsp2.getValue(): " + (Date) endDateJSPinner.getValue());
                if (mr.getStartDate() != null && mr.getEndDate() != null) {
                    if ((mr.getStartDate().before((Date) endDateJSPinner.getValue()))
                            && (mr.getEndDate().after((Date) startDateJSpinner.getValue()))) {

                        ArrayList<String> mineResultGroup2 = new ArrayList<String>();
                        Set<String> mrss2 = statMap.keySet();
                        mineResultGroup2.addAll(mrss2);
                        Collections.sort(mineResultGroup2, new AlphanumComparator());
                        Iterator statMapIterator = mineResultGroup2.iterator();

                        //            Iterator statMapIterator = statMap.entrySet().iterator();
                        if (!statMap.entrySet().isEmpty() || !eventMap.entrySet().isEmpty()) {
                            JPanel checkboxPanel = new JPanel(new WrapLayout());

                            checkboxPanel.setBackground(Color.white);

                            int count = 1;
                            chart = ChartFactory.createXYAreaChart(// Title
                                    mr.getSourceID() + " " + mr.getGroup(), // +
                                    null, // X-Axis
                                    // label
                                    null, // Y-Axis label
                                    null, // Dataset
                                    PlotOrientation.VERTICAL, false, // Show
                                    // legend
                                    true, // tooltips
                                    false // url
                            );
                            TextTitle my_Chart_title = new TextTitle(mr.getSourceID() + " " + mr.getGroup(),
                                    new Font("Verdana", Font.BOLD, 17));
                            chart.setTitle(my_Chart_title);
                            XYPlot plot = (XYPlot) chart.getPlot();
                            ValueAxis range = plot.getRangeAxis();
                            range.setVisible(false);

                            final DateAxis domainAxis1 = new DateAxis();
                            domainAxis1.setTickLabelsVisible(true);
                            // domainAxis1.setTickMarksVisible(true);

                            logger.debug("getRange: " + domainAxis1.getRange());
                            if (relativeCheckBox.isSelected()) {
                                domainAxis1.setRange((Date) startDateJSpinner.getValue(),
                                        (Date) endDateJSPinner.getValue());
                            } else {
                                Date startDate = mr.getStartDate();
                                Date endDate = mr.getEndDate();
                                if (mr.getStartDate().before((Date) startDateJSpinner.getValue())) {
                                    startDate = (Date) startDateJSpinner.getValue();
                                    logger.debug("setMinimumDate: " + (Date) startDateJSpinner.getValue());
                                }
                                if (mr.getEndDate().after((Date) endDateJSPinner.getValue())) {
                                    endDate = (Date) endDateJSPinner.getValue();
                                    logger.debug("setMaximumDate: " + (Date) endDateJSPinner.getValue());
                                }
                                if (startDate.before(endDate)) {
                                    domainAxis1.setRange(startDate, endDate);
                                }
                            }
                            XYToolTipGenerator tt1 = new XYToolTipGenerator() {
                                public String generateToolTip(XYDataset dataset, int series, int item) {
                                    StringBuffer sb = new StringBuffer();
                                    String htmlStr = "<html>";
                                    Number x;
                                    FastDateFormat sdf = FastDateFormat.getInstance("dd-MMM-yyyy HH:mm:ss");
                                    x = dataset.getX(series, item);
                                    sb.append(htmlStr);
                                    if (x != null) {
                                        sb.append("<p style='color:#000000;'>" + (sdf.format(x)) + "</p>");
                                        sb.append("<p style='color:#000000;'>"
                                                + dataset.getSeriesKey(series).toString() + ": "
                                                + form.format(dataset.getYValue(0, item)) + "</p>");
                                        if (mr.getFileLineForDate(new Date(x.longValue()),
                                                dataset.getSeriesKey(series).toString()) != null) {
                                            sb.append(
                                                    "<p style='color:#0000FF;'>"
                                                            + cd.sourceFileArrayListMap
                                                                    .get(pairs.getKey()).get(mr
                                                                            .getFileLineForDate(
                                                                                    new Date(x.longValue()),
                                                                                    dataset.getSeriesKey(series)
                                                                                            .toString())
                                                                            .getFileId())
                                                                    .getFile().getName()
                                                            + ":"
                                                            + mr.getFileLineForDate(new Date(x.longValue()),
                                                                    dataset.getSeriesKey(series).toString())
                                                                    .getLineNumber()
                                                            + "</p>");

                                        }
                                    }
                                    return sb.toString();
                                }
                            };

                            while (statMapIterator.hasNext()) {

                                TimeSeriesCollection dataset = new TimeSeriesCollection();
                                String me = (String) statMapIterator.next();

                                ExtendedTimeSeries ts = (ExtendedTimeSeries) statMap.get(me);
                                // logger.info(((TimeSeries)
                                // me.getValue()).getMaxY());
                                if (((ExtendedTimeSeries) statMap.get(me)).getTimeSeries().getMaxY() > 0)
                                    dataset.addSeries(ts.getTimeSeries());
                                logger.debug("mineResultSet group: " + mr.getGroup() + ", key: " + me
                                        + " nb records: " + ((ExtendedTimeSeries) statMap.get(me))
                                                .getTimeSeries().getItemCount());
                                logger.debug("(((TimeSeries) me.getValue()).getMaxY(): "
                                        + (((ExtendedTimeSeries) statMap.get(me)).getTimeSeries().getMaxY()));
                                logger.debug("(((TimeSeries) me.getValue()).getMinY(): "
                                        + (((ExtendedTimeSeries) statMap.get(me)).getTimeSeries().getMinY()));
                                XYPlot plot1 = chart.getXYPlot();
                                //   LogarithmicAxis axis4 = new LogarithmicAxis(me.toString());
                                NumberAxis axis4 = new NumberAxis(me.toString());
                                axis4.setAutoRange(true);
                                axis4.setAxisLineVisible(true);
                                axis4.setAutoRangeIncludesZero(false);
                                plot1.setDomainCrosshairVisible(true);
                                plot1.setRangeCrosshairVisible(true);
                                axis4.setRange(new Range(
                                        ((ExtendedTimeSeries) statMap.get(me)).getTimeSeries().getMinY(),
                                        ((ExtendedTimeSeries) statMap.get(me)).getTimeSeries().getMaxY()));
                                axis4.setLabelPaint(colors[count]);
                                axis4.setTickLabelPaint(colors[count]);
                                plot1.setRangeAxis(count, axis4);
                                final ValueAxis domainAxis = domainAxis1;
                                domainAxis.setLowerMargin(0.0);
                                domainAxis.setUpperMargin(0.0);
                                plot1.setDomainAxis(domainAxis);
                                plot1.setForegroundAlpha(0.5f);
                                plot1.setDataset(count, dataset);
                                plot1.mapDatasetToRangeAxis(count, count);
                                final XYAreaRenderer renderer = new XYAreaRenderer(); // XYAreaRenderer2
                                // also
                                // nice
                                if ((((ExtendedTimeSeries) statMap.get(me)).getTimeSeries().getMaxY()
                                        - ((ExtendedTimeSeries) statMap.get(me)).getTimeSeries()
                                                .getMinY()) > 0) {

                                    // renderer.setToolTipGenerator(new
                                    // StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,new
                                    // FastDateFormat("d-MMM-yyyy HH:mm:ss"),
                                    // new DecimalFormat("#,##0.00")));
                                }
                                renderer.setSeriesPaint(0, colors[count]);
                                renderer.setSeriesVisible(0, true);
                                renderer.setSeriesToolTipGenerator(0, tt1);
                                plot1.setRenderer(count, renderer);
                                int hits = 0; // ts.getStat()[1]
                                int matchs = 0;
                                if (((ExtendedTimeSeries) statMap.get(me)).getStat() != null) {
                                    hits = ((ExtendedTimeSeries) statMap.get(me)).getStat()[1];
                                    //   matchs= ((ExtendedTimeSeries) statMap.get(me)).getStat()[0];
                                }
                                JCheckBox jcb = new JCheckBox(new VisibleAction(panel, checkboxPanel, axis4,
                                        me.toString() + "(" + hits + ")", 0));
                                Boolean selected = true;
                                jcb.setSelected(true);
                                jcb.setBackground(Color.white);
                                jcb.setBorderPainted(true);
                                jcb.setBorder(BorderFactory.createLineBorder(colors[count], 1, true));
                                jcb.setFont(new Font("Sans-serif", oldSmallFont.getStyle(),
                                        oldSmallFont.getSize()));
                                checkboxPanel.add(jcb);
                                count++;
                            }
                            Iterator eventMapIterator = eventMap.entrySet().iterator();
                            while (eventMapIterator.hasNext()) {

                                //   HistogramDataset histoDataSet=new HistogramDataset();

                                TimeSeriesCollection dataset = new TimeSeriesCollection();
                                Map.Entry me = (Map.Entry) eventMapIterator.next();
                                // if (dataset.getEndXValue(series, item))
                                if (((ExtendedTimeSeries) me.getValue()).getTimeSeries().getMaxY() > 0)
                                    dataset.addSeries(((ExtendedTimeSeries) me.getValue()).getTimeSeries());

                                logger.debug("mineResultSet group: " + mr.getGroup() + ", key: " + me.getKey()
                                        + " nb records: "
                                        + ((ExtendedTimeSeries) me.getValue()).getTimeSeries().getItemCount());
                                logger.debug("mineResultSet hash content: " + mr.getEventTimeseriesMap());
                                logger.debug("(((TimeSeries) me.getValue()).getMaxY(): "
                                        + (((ExtendedTimeSeries) me.getValue()).getTimeSeries().getMaxY()));
                                logger.debug("(((TimeSeries) me.getValue()).getMinY(): "
                                        + (((ExtendedTimeSeries) me.getValue()).getTimeSeries().getMinY()));
                                XYPlot plot2 = chart.getXYPlot();
                                //   LogarithmicAxis axis4 = new LogarithmicAxis(me.toString());
                                NumberAxis axis4 = new NumberAxis(me.getKey().toString());
                                axis4.setAutoRange(true);
                                // axis4.setInverted(true);
                                axis4.setAxisLineVisible(true);
                                axis4.setAutoRangeIncludesZero(true);

                                // axis4.setRange(new Range(((TimeSeries)
                                // axis4.setRange(new Range(((TimeSeries)
                                // me.getValue()).getMinY(), ((TimeSeries)
                                // me.getValue()).getMaxY()));
                                axis4.setLabelPaint(colors[count]);
                                axis4.setTickLabelPaint(colors[count]);
                                plot2.setRangeAxis(count, axis4);
                                final ValueAxis domainAxis = domainAxis1;

                                // domainAxis.setLowerMargin(0.001);
                                // domainAxis.setUpperMargin(0.0);
                                plot2.setDomainCrosshairVisible(true);
                                plot2.setRangeCrosshairVisible(true);
                                //plot2.setRangeCrosshairLockedOnData(true);
                                plot2.setDomainAxis(domainAxis);
                                plot2.setForegroundAlpha(0.5f);
                                plot2.setDataset(count, dataset);
                                plot2.mapDatasetToRangeAxis(count, count);
                                XYBarRenderer rend = new XYBarRenderer(); // XYErrorRenderer

                                rend.setShadowVisible(false);
                                rend.setDrawBarOutline(true);
                                Stroke stroke = new BasicStroke(5);
                                rend.setBaseStroke(stroke);
                                final XYItemRenderer renderer = rend;
                                renderer.setSeriesToolTipGenerator(0, tt1);
                                // renderer.setItemLabelsVisible(true);
                                renderer.setSeriesPaint(0, colors[count]);
                                renderer.setSeriesVisible(0, true);
                                plot2.setRenderer(count, renderer);
                                int hits = 0;
                                int matchs = 0;

                                if (((ExtendedTimeSeries) me.getValue()).getStat() != null) {
                                    hits = ((ExtendedTimeSeries) me.getValue()).getStat()[1];
                                    //   matchs= ((ExtendedTimeSeries) me.getValue()).getStat()[0];
                                }
                                JCheckBox jcb = new JCheckBox(new VisibleAction(panel, checkboxPanel, axis4,
                                        me.getKey().toString() + "(" + hits + ")", 0));

                                jcb.setSelected(true);
                                jcb.setBackground(Color.white);
                                jcb.setBorderPainted(true);
                                jcb.setBorder(BorderFactory.createLineBorder(colors[count], 1, true));
                                jcb.setFont(new Font("Sans-serif", oldSmallFont.getStyle(),
                                        oldSmallFont.getSize()));
                                checkboxPanel.add(jcb);
                                count++;
                            }

                            JPanel pan = new JPanel();

                            pan.setLayout(new BorderLayout());
                            pan.setPreferredSize(new Dimension(600,
                                    Integer.parseInt((String) Preferences.getPreference("chartSize"))));
                            // pan.setPreferredSize(panelSize);
                            panel.add(pan);
                            final ChartPanel cpanel = new ChartPanel(chart);
                            cpanel.setMinimumDrawWidth(0);
                            cpanel.setMinimumDrawHeight(0);
                            cpanel.setMaximumDrawWidth(1920);
                            cpanel.setMaximumDrawHeight(1200);
                            // cpanel.setInitialDelay(0);
                            cpanel.setDismissDelay(9999999);
                            cpanel.setInitialDelay(50);
                            cpanel.setReshowDelay(200);
                            cpanel.setPreferredSize(new Dimension(600, 350));
                            // cpanel.restoreAutoBounds(); fix the tooltip
                            // missing problem but then relative display is
                            // broken
                            panel.add(new JSeparator(SwingConstants.HORIZONTAL));
                            pan.add(cpanel, BorderLayout.CENTER);
                            // checkboxPanel.setPreferredSize(new Dimension(600,
                            // 0));
                            cpanel.addChartMouseListener(new ChartMouseListener() {

                                public void chartMouseClicked(ChartMouseEvent chartmouseevent) {
                                    // chartmouseevent.getEntity().

                                    ChartEntity entity = chartmouseevent.getEntity();
                                    if (entity instanceof XYItemEntity) {
                                        XYItemEntity item = ((XYItemEntity) entity);
                                        if (item.getDataset() instanceof TimeSeriesCollection) {

                                            TimeSeriesCollection data = (TimeSeriesCollection) item
                                                    .getDataset();
                                            TimeSeries series = data.getSeries(item.getSeriesIndex());
                                            TimeSeriesDataItem dataitem = series.getDataItem(item.getItem());

                                            // logger.info(" Serie: "+series.getKey().toString()
                                            // +
                                            // " Period : "+dataitem.getPeriod().toString());
                                            // mr.getFileForDate(new Date
                                            // (x.longValue())
                                            ;
                                            int x = chartmouseevent.getTrigger().getX();
                                            // logger.info(mr.getFileForDate(dataitem.getPeriod().getEnd()));
                                            int y = chartmouseevent.getTrigger().getY();
                                            String myString = "";
                                            if (dataitem.getPeriod() != null) {
                                                logger.info(dataitem.getPeriod().getEnd());
                                                //                                    myString = mr.getFileForDate(dataitem.getPeriod().getEnd()).toString();
                                                String lineString = ""
                                                        + mr.getFileLineForDate(dataitem.getPeriod().getEnd(),
                                                                item.getDataset()
                                                                        .getSeriesKey(item.getSeriesIndex())
                                                                        .toString())
                                                                .getLineNumber();
                                                String fileString = cd.sourceFileArrayListMap
                                                        .get(pairs.getKey())
                                                        .get(mr.getFileLineForDate(
                                                                dataitem.getPeriod().getEnd(),
                                                                item.getDataset()
                                                                        .getSeriesKey(item.getSeriesIndex())
                                                                        .toString())
                                                                .getFileId())
                                                        .getFile().getAbsolutePath();
                                                String command = Preferences.getPreference("editorCommand");
                                                command = command.replace("$line", lineString);
                                                command = command.replace("$file", fileString);
                                                logger.info(command);
                                                Runtime rt = Runtime.getRuntime();
                                                try {
                                                    rt.exec(command);
                                                } catch (IOException e1) {
                                                    // TODO Auto-generated catch block
                                                    e1.printStackTrace();
                                                }
                                                StringSelection stringSelection = new StringSelection(
                                                        fileString);
                                                Clipboard clpbrd = Toolkit.getDefaultToolkit()
                                                        .getSystemClipboard();
                                                clpbrd.setContents(stringSelection, null);
                                                //      cpanel.getGraphics().drawString("file name copied", x - 5, y - 5);
                                                try {
                                                    Thread.sleep(500);
                                                } catch (InterruptedException e) {
                                                    // TODO Auto-generated catch
                                                    // block
                                                    e.printStackTrace();
                                                }
                                            }

                                            // logger.info(mr.getFileForDate(dataitem.getPeriod().getStart()));
                                        }
                                    }
                                }

                                public void chartMouseMoved(ChartMouseEvent e) {
                                }

                            });

                            pan.add(checkboxPanel, BorderLayout.SOUTH);

                        }
                    }
                } else {
                    logger.debug("mr dates null: " + mr.getGroup() + mr.getSourceID() + mr.getLogFiles());
                }
            }
        }
    }
    // Map=miner.mine(sourceFiles,repo);
    estimatedTime = System.currentTimeMillis() - startTime;

    revalidate();
    logger.info("display time: " + estimatedTime);
}

From source file:org.toobsframework.pres.chart.ChartBuilder.java

public void setValueAxisBounds(IRequest componentRequest, ValueAxis valueAxis, RangeAxisDef valueAxisDef,
        Map params) {//  ww  w.j a  va2s . co  m
    if (valueAxisDef.getUpperBound() != null) {
        Double upper = Double.parseDouble(
                ParameterUtil.resolveParam(componentRequest, valueAxisDef.getUpperBound(), params, "0.0")[0]);
        if (valueAxis == null || valueAxis.getUpperBound() < upper)
            valueAxis.setUpperBound(upper);
    }
    if (valueAxisDef.getLowerBound() != null) {
        Double lower = Double.parseDouble(
                ParameterUtil.resolveParam(componentRequest, valueAxisDef.getLowerBound(), params, "0.0")[0]);
        if (valueAxis == null || valueAxis.getLowerBound() < lower)
            valueAxis.setLowerBound(lower);
    }

    double lowerMargin = Double.parseDouble(
            ParameterUtil.resolveParam(componentRequest, valueAxisDef.getLowerMargin(), params, "0.0")[0]);
    double upperMargin = Double.parseDouble(
            ParameterUtil.resolveParam(componentRequest, valueAxisDef.getUpperMargin(), params, "0.0")[0]);
    valueAxis.setLowerMargin(lowerMargin);
    valueAxis.setUpperMargin(upperMargin);
}

From source file:ucar.unidata.idv.control.chart.TimeSeriesChartWrapper.java

/**
 * Create the chart//w  ww .  j  a  va 2s.c o  m
 */
private void createChart() {
    if (chartPanel != null) {
        return;
    }
    dataset = new TimeSeriesCollection();
    ValueAxis timeAxis = doMakeDateAxis();
    timeAxis.setLowerMargin(0.02);
    timeAxis.setUpperMargin(0.02);
    NumberAxis valueAxis = new NumberAxis("Data");
    valueAxis.setAutoRangeIncludesZero(false);
    plot = new MyTimeSeriesPlot(this, dataset, timeAxis, valueAxis);
    plot.setRenderer(doMakeRenderer());
    chart = new JFreeChart(getName(), JFreeChart.DEFAULT_TITLE_FONT, plot, true);

    addAnnotations(segments);
    addAnnotations(wayPoints);
    for (int i = 0; i < wayPoints.size(); i++) {
        WayPoint waypoint = (WayPoint) wayPoints.get(i);
        waypoint.addPropertyChangeListener(this);
    }
    addAnnotations(rangeFilters);

    initXYPlot(plot);
    XYItemRenderer r = plot.getRenderer();
    if (r instanceof XYLineAndShapeRenderer) {
        XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
        //            renderer.setDefaultShapesVisible(false);
        //            renderer.setDefaultShapesFilled(false);
        //      renderer.setDefaultShapesFilled(true);
    }

    DateAxis axis = (DateAxis) plot.getDomainAxis();
    //        axis.setDateFormatOverride(new SimpleDateFormat("HH:MM:ss"));
    chartPanel = doMakeChartPanel(chart);
}

From source file:org.gumtree.vis.plot1d.Plot1DChartEditor.java

@Override
public void updateChart(JFreeChart chart) {
    super.updateChart(chart);
    if (currentSeriesIndex >= 0) {
        XYItemRenderer renderer = chart.getXYPlot().getRenderer();
        if (renderer instanceof XYLineAndShapeRenderer) {
            renderer.setSeriesPaint(currentSeriesIndex, curveColorPaint.getPaint());
            Stroke stroke = curveStrokeSample.getStroke();
            if (stroke == null) {
                ((XYLineAndShapeRenderer) renderer).setSeriesLinesVisible(currentSeriesIndex, false);
            } else {
                ((XYLineAndShapeRenderer) renderer).setSeriesLinesVisible(currentSeriesIndex, true);
                renderer.setSeriesStroke(currentSeriesIndex, stroke);
            }//from w ww.jav a 2 s  .  co  m

            ((XYErrorRenderer) renderer).setDrawYError(showError.isSelected());

            boolean isMarkerVisible = showMarker.isSelected();
            if (!isMarkerVisible) {
                for (int i = 0; i < chart.getXYPlot().getSeriesCount(); i++) {
                    ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(i, isMarkerVisible);
                }
            }
            ((XYLineAndShapeRenderer) renderer).setBaseShapesVisible(isMarkerVisible);

            Shape shape = currentShape.getShape();
            if (shape == null) {
                ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(currentSeriesIndex, false);
            } else {
                ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(currentSeriesIndex, isMarkerVisible);
                renderer.setSeriesShape(currentSeriesIndex, shape);
            }

            ((XYLineAndShapeRenderer) renderer).setSeriesShapesFilled(currentSeriesIndex,
                    markerFilled.isSelected());

            renderer.setSeriesVisible(currentSeriesIndex, curveVisable.isSelected());

            //Update logarithm X filed
            ValueAxis axis = chart.getXYPlot().getDomainAxis();
            if (axis instanceof LogarithmizableAxis) {
                if (logarithmX.isSelected() != initialLogarithmX) {
                    ((LogarithmizableAxis) axis).setLogarithmic(logarithmX.isSelected());
                    ((LogarithmizableAxis) axis).autoAdjustRange();
                }
            }
            if (flipX.isSelected() != initialFlipX) {
                axis.setInverted(flipX.isSelected());
            }

            float newMargin = initialMargin;
            try {
                newMargin = Float.valueOf(horizontalMargin.getText());
                if (newMargin < 0) {
                    newMargin = 0;
                } else if (newMargin > 0.10) {
                    newMargin = 0.10f;
                }
            } catch (Exception e) {
            }
            if (newMargin != initialMargin) {
                axis.setLowerMargin(newMargin);
                axis.setUpperMargin(newMargin);
            }

            //Update logarithm Y filed
            axis = chart.getXYPlot().getRangeAxis();
            if (axis instanceof LogarithmizableAxis) {
                if (logarithmY.isSelected() != initialLogarithmY) {
                    ((LogarithmizableAxis) axis).setLogarithmic(logarithmY.isSelected());
                    ((LogarithmizableAxis) axis).autoAdjustRange();
                }
            }
            if (flipY.isSelected() != initialFlipY) {
                axis.setInverted(flipY.isSelected());
            }
        }
    }
    applyROIChange();
}

From source file:replicatorg.app.ui.panels.ControlPanel.java

private ChartPanel makeChart() {
    JFreeChart chart = ChartFactory.createXYLineChart(null, null, null, t0MeasuredDataset,
            PlotOrientation.VERTICAL, false, false, false);
    chart.setBorderVisible(false);//from   w ww  . j  av  a 2s  .  co  m
    chart.setBackgroundPaint(null);

    XYPlot plot = chart.getXYPlot();
    ValueAxis axis = plot.getDomainAxis();
    axis.setLowerMargin(0);
    axis.setFixedAutoRange(3L * 60L * 1000L); // auto range to three minutes

    TickUnits unitSource = new TickUnits();
    unitSource.add(new NumberTickUnit(60L * 1000L)); // minutes
    unitSource.add(new NumberTickUnit(1L * 1000L)); // seconds

    axis.setStandardTickUnits(unitSource);
    axis.setTickLabelsVisible(false); // We don't need to see the millisecond count
    axis = plot.getRangeAxis();
    axis.setRange(0, 300); // set temperature range from 0 to 300 degrees C so you can see overshoots 

    XYStepRenderer renderer = new XYStepRenderer();
    plot.setDataset(1, t0TargetDataset);
    plot.setRenderer(1, renderer);
    plot.getRenderer(1).setSeriesPaint(0, t0TargetColor);
    plot.getRenderer(0).setSeriesPaint(0, t0MeasuredColor);

    plot.setDataset(2, pMeasuredDataset);
    plot.setRenderer(2, new XYLineAndShapeRenderer(true, false));
    plot.getRenderer(2).setSeriesPaint(0, pMeasuredColor);
    plot.setDataset(3, pTargetDataset);
    plot.setRenderer(3, new XYStepRenderer());
    plot.getRenderer(3).setSeriesPaint(0, pTargetColor);

    plot.setDatasetRenderingOrder(DatasetRenderingOrder.REVERSE);
    ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new Dimension(400, 160));
    chartPanel.setOpaque(false);
    return chartPanel;
}

From source file:org.yccheok.jstock.gui.charting.ChartJDialog.java

/**
 * Creates a chart.//from   www. j a  va2  s.c  o m
 *
 * @return a chart.
 */
private JFreeChart createPriceVolumeChart(XYDataset priceDataset, XYDataset volumeDataset) {
    final String title = getBestStockName();

    final ValueAxis timeAxis = new DateAxis(GUIBundle.getString("ChartJDialog_Date"));
    timeAxis.setLowerMargin(0.02); // reduce the default margins
    timeAxis.setUpperMargin(0.02);

    final NumberAxis rangeAxis1 = new NumberAxis(GUIBundle.getString("ChartJDialog_Price"));
    rangeAxis1.setAutoRangeIncludesZero(false); // override default
    rangeAxis1.setLowerMargin(0.40); // to leave room for volume bars
    DecimalFormat format = new DecimalFormat("0.00#");
    rangeAxis1.setNumberFormatOverride(format);

    XYPlot plot = new XYPlot(priceDataset, timeAxis, rangeAxis1, null);

    XYItemRenderer renderer1 = new XYLineAndShapeRenderer(true, false);
    renderer1.setBaseToolTipGenerator(
            new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                    new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00#")));
    plot.setRenderer(0, renderer1);

    final NumberAxis rangeAxis2 = new NumberAxis("Volume");
    rangeAxis2.setUpperMargin(1.00); // to leave room for price line
    plot.setRangeAxis(1, rangeAxis2);
    plot.setDataset(1, volumeDataset);
    plot.mapDatasetToRangeAxis(1, 1);

    XYBarRenderer renderer2 = new XYBarRenderer(0.20);
    renderer2.setBaseToolTipGenerator(
            new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                    new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0,000.00")));
    plot.setRenderer(1, renderer2);

    CombinedDomainXYPlot cplot = new CombinedDomainXYPlot(timeAxis);
    cplot.add(plot, 1);
    cplot.setGap(8.0);

    JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, cplot, true);
    org.yccheok.jstock.charting.Utils.applyChartThemeEx(chart);

    // Only do it after applying chart theme.
    org.yccheok.jstock.charting.Utils.setPriceSeriesPaint(renderer1);
    org.yccheok.jstock.charting.Utils.setVolumeSeriesPaint(renderer2);

    // Handle zooming event.
    chart.addChangeListener(this.getChartChangeListner());

    return chart;
}

From source file:org.yccheok.jstock.gui.charting.ChartJDialog.java

private void updateMFI(int days, boolean show) {
    if (this.priceVolumeChart == null) {
        this.priceVolumeChart = this.createPriceVolumeChart(this.priceDataset, this.volumeDataset);
    }/* w  ww . j  a v a2  s.  c  o m*/
    if (this.candlestickChart == null) {
        this.candlestickChart = this.createCandlestickChart(this.priceOHLCDataset);
    }

    final TAEx taEx = TAEx.newInstance(TA.MFI, new Integer(days));

    if (show) {
        if (price_volume_ta_map.containsKey(taEx) == false) {
            final XYDataset dataset = org.yccheok.jstock.charting.TechnicalAnalysis.createMFI(this.chartDatas,
                    getMFIKey(days), days);
            NumberAxis rangeAxis1 = new NumberAxis(GUIBundle.getString("ChartJDialog_MFI"));
            rangeAxis1.setAutoRangeIncludesZero(false); // override default
            rangeAxis1.setLowerMargin(0.40); // to leave room for volume bars
            DecimalFormat format = new DecimalFormat("0");
            rangeAxis1.setNumberFormatOverride(format);

            final ValueAxis timeAxis = new DateAxis(GUIBundle.getString("ChartJDialog_Date"));
            timeAxis.setLowerMargin(0.02); // reduce the default margins
            timeAxis.setUpperMargin(0.02);

            XYPlot plot = new XYPlot(dataset, timeAxis, rangeAxis1, null);

            XYItemRenderer renderer1 = new XYLineAndShapeRenderer(true, false);
            renderer1.setBaseToolTipGenerator(
                    new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                            new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00#")));
            plot.setRenderer(0, renderer1);
            price_volume_ta_map.put(taEx, plot);
        }

        if (candlestick_ta_map.containsKey(taEx) == false) {
            try {
                /* Not sure why. I cannot make priceVolumeChart and candlestickChart sharing the same
                 * plot. If not, this will inhibit incorrect zooming behavior.
                 */
                candlestick_ta_map.put(taEx, (XYPlot) price_volume_ta_map.get(taEx).clone());
            } catch (CloneNotSupportedException ex) {
                log.error(null, ex);
            }
        }

        if (this.activeTAExs.contains(taEx) == false) {
            // Avoid duplication.
            final XYPlot price_volume_ta = price_volume_ta_map.get(taEx);
            final XYPlot candlestick_ta = candlestick_ta_map.get(taEx);

            final CombinedDomainXYPlot cplot0 = (CombinedDomainXYPlot) this.priceVolumeChart.getPlot();
            final CombinedDomainXYPlot cplot1 = (CombinedDomainXYPlot) this.candlestickChart.getPlot();
            if (price_volume_ta != null)
                cplot0.add(price_volume_ta, 1); // weight is 1.
            if (candlestick_ta != null)
                cplot1.add(candlestick_ta, 1); // weight is 1.
            org.yccheok.jstock.charting.Utils.applyChartThemeEx(this.priceVolumeChart);
            org.yccheok.jstock.charting.Utils.applyChartThemeEx(this.candlestickChart);
        }
    } else {
        final CombinedDomainXYPlot cplot0 = (CombinedDomainXYPlot) this.priceVolumeChart.getPlot();
        final CombinedDomainXYPlot cplot1 = (CombinedDomainXYPlot) this.candlestickChart.getPlot();
        final XYPlot price_volume_ta = price_volume_ta_map.get(taEx);
        final XYPlot candlestick_ta = candlestick_ta_map.get(taEx);

        if (price_volume_ta != null)
            cplot0.remove(price_volume_ta);
        if (candlestick_ta != null)
            cplot1.remove(candlestick_ta);
    }

    if (show && this.activeTAExs.contains(taEx) == false) {
        this.activeTAExs.add(taEx);
        JStock.instance().getChartJDialogOptions().add(taEx);
    } else if (!show) {
        this.activeTAExs.remove(taEx);
        JStock.instance().getChartJDialogOptions().remove(taEx);
    }
}

From source file:org.yccheok.jstock.gui.charting.ChartJDialog.java

private void updateRSI(int days, boolean show) {
    if (this.priceVolumeChart == null) {
        this.priceVolumeChart = this.createPriceVolumeChart(this.priceDataset, this.volumeDataset);
    }/* w ww.ja va2  s  .  c  o m*/
    if (this.candlestickChart == null) {
        this.candlestickChart = this.createCandlestickChart(this.priceOHLCDataset);
    }

    final TAEx taEx = TAEx.newInstance(TA.RSI, new Integer(days));

    if (show) {
        if (price_volume_ta_map.containsKey(taEx) == false) {
            final XYDataset dataset = org.yccheok.jstock.charting.TechnicalAnalysis.createRSI(this.chartDatas,
                    getRSIKey(days), days);
            NumberAxis rangeAxis1 = new NumberAxis(GUIBundle.getString("ChartJDialog_RSI"));
            rangeAxis1.setAutoRangeIncludesZero(false); // override default
            rangeAxis1.setLowerMargin(0.40); // to leave room for volume bars
            DecimalFormat format = new DecimalFormat("0");
            rangeAxis1.setNumberFormatOverride(format);

            final ValueAxis timeAxis = new DateAxis(GUIBundle.getString("ChartJDialog_Date"));
            timeAxis.setLowerMargin(0.02); // reduce the default margins
            timeAxis.setUpperMargin(0.02);

            XYPlot plot = new XYPlot(dataset, timeAxis, rangeAxis1, null);

            XYItemRenderer renderer1 = new XYLineAndShapeRenderer(true, false);
            renderer1.setBaseToolTipGenerator(
                    new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                            new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00#")));
            plot.setRenderer(0, renderer1);
            price_volume_ta_map.put(taEx, plot);
        }

        if (candlestick_ta_map.containsKey(taEx) == false) {
            try {
                /* Not sure why. I cannot make priceVolumeChart and candlestickChart sharing the same
                 * plot. If not, this will inhibit incorrect zooming behavior.
                 */
                candlestick_ta_map.put(taEx, (XYPlot) price_volume_ta_map.get(taEx).clone());
            } catch (CloneNotSupportedException ex) {
                log.error(null, ex);
            }
        }

        if (this.activeTAExs.contains(taEx) == false) {
            // Avoid duplication.
            final XYPlot price_volume_ta = price_volume_ta_map.get(taEx);
            final XYPlot candlestick_ta = candlestick_ta_map.get(taEx);
            final CombinedDomainXYPlot cplot0 = (CombinedDomainXYPlot) this.priceVolumeChart.getPlot();
            final CombinedDomainXYPlot cplot1 = (CombinedDomainXYPlot) this.candlestickChart.getPlot();

            if (price_volume_ta != null)
                cplot0.add(price_volume_ta, 1); // weight is 1.
            if (candlestick_ta != null)
                cplot1.add(candlestick_ta, 1); // weight is 1.
            org.yccheok.jstock.charting.Utils.applyChartThemeEx(this.priceVolumeChart);
            org.yccheok.jstock.charting.Utils.applyChartThemeEx(this.candlestickChart);
        }
    } else {
        final CombinedDomainXYPlot cplot0 = (CombinedDomainXYPlot) this.priceVolumeChart.getPlot();
        final CombinedDomainXYPlot cplot1 = (CombinedDomainXYPlot) this.candlestickChart.getPlot();
        final XYPlot price_volume_ta = price_volume_ta_map.get(taEx);
        final XYPlot candlestick_ta = candlestick_ta_map.get(taEx);

        if (price_volume_ta != null)
            cplot0.remove(price_volume_ta);
        if (candlestick_ta != null)
            cplot1.remove(candlestick_ta);
    }

    if (show && this.activeTAExs.contains(taEx) == false) {
        this.activeTAExs.add(taEx);
        JStock.instance().getChartJDialogOptions().add(taEx);
    } else if (!show) {
        this.activeTAExs.remove(taEx);
        JStock.instance().getChartJDialogOptions().remove(taEx);
    }
}

From source file:org.yccheok.jstock.gui.charting.ChartJDialog.java

private void updateCCI(int days, boolean show) {
    if (this.priceVolumeChart == null) {
        this.priceVolumeChart = this.createPriceVolumeChart(this.priceDataset, this.volumeDataset);
    }/*from   w  ww  .j  ava  2s .c  o  m*/
    if (this.candlestickChart == null) {
        this.candlestickChart = this.createCandlestickChart(this.priceOHLCDataset);
    }

    final TAEx taEx = TAEx.newInstance(TA.CCI, new Integer(days));

    if (show) {
        if (price_volume_ta_map.containsKey(taEx) == false) {
            final XYDataset dataset = org.yccheok.jstock.charting.TechnicalAnalysis.createCCI(this.chartDatas,
                    getCCIKey(days), days);
            NumberAxis rangeAxis1 = new NumberAxis(GUIBundle.getString("ChartJDialog_CCI"));
            rangeAxis1.setAutoRangeIncludesZero(false); // override default
            rangeAxis1.setLowerMargin(0.40); // to leave room for volume bars
            DecimalFormat format = new DecimalFormat("0");
            rangeAxis1.setNumberFormatOverride(format);

            final ValueAxis timeAxis = new DateAxis(GUIBundle.getString("ChartJDialog_Date"));
            timeAxis.setLowerMargin(0.02); // reduce the default margins
            timeAxis.setUpperMargin(0.02);

            XYPlot plot = new XYPlot(dataset, timeAxis, rangeAxis1, null);

            XYItemRenderer renderer1 = new XYLineAndShapeRenderer(true, false);
            renderer1.setBaseToolTipGenerator(
                    new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                            new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00#")));
            plot.setRenderer(0, renderer1);
            org.yccheok.jstock.charting.Utils.setPriceSeriesPaint(renderer1);
            price_volume_ta_map.put(taEx, plot);
        }

        if (candlestick_ta_map.containsKey(taEx) == false) {
            try {
                /* Not sure why. I cannot make priceVolumeChart and candlestickChart sharing the same
                 * plot. If not, this will inhibit incorrect zooming behavior.
                 */
                candlestick_ta_map.put(taEx, (XYPlot) price_volume_ta_map.get(taEx).clone());
            } catch (CloneNotSupportedException ex) {
                log.error(null, ex);
            }
        }

        if (this.activeTAExs.contains(taEx) == false) {
            // Avoid duplication.
            final XYPlot price_volume_ta = price_volume_ta_map.get(taEx);
            final XYPlot candlestick_ta = candlestick_ta_map.get(taEx);

            final CombinedDomainXYPlot cplot0 = (CombinedDomainXYPlot) this.priceVolumeChart.getPlot();
            final CombinedDomainXYPlot cplot1 = (CombinedDomainXYPlot) this.candlestickChart.getPlot();
            if (price_volume_ta != null)
                cplot0.add(price_volume_ta, 1); // weight is 1.
            if (candlestick_ta != null)
                cplot1.add(candlestick_ta, 1); // weight is 1.
            org.yccheok.jstock.charting.Utils.applyChartThemeEx(this.priceVolumeChart);
            org.yccheok.jstock.charting.Utils.applyChartThemeEx(this.candlestickChart);
        }
    } else {
        final CombinedDomainXYPlot cplot0 = (CombinedDomainXYPlot) this.priceVolumeChart.getPlot();
        final CombinedDomainXYPlot cplot1 = (CombinedDomainXYPlot) this.candlestickChart.getPlot();
        final XYPlot price_volume_ta = price_volume_ta_map.get(taEx);
        final XYPlot candlestick_ta = candlestick_ta_map.get(taEx);

        if (price_volume_ta != null)
            cplot0.remove(price_volume_ta);
        if (candlestick_ta != null)
            cplot1.remove(candlestick_ta);
    }

    if (show && this.activeTAExs.contains(taEx) == false) {
        this.activeTAExs.add(taEx);
        JStock.instance().getChartJDialogOptions().add(taEx);
    } else if (!show) {
        this.activeTAExs.remove(taEx);
        JStock.instance().getChartJDialogOptions().remove(taEx);
    }
}

From source file:org.yccheok.jstock.gui.charting.ChartJDialog.java

private void updateMACD(MACD.Period period, boolean show) {
    if (this.priceVolumeChart == null) {
        this.priceVolumeChart = this.createPriceVolumeChart(this.priceDataset, this.volumeDataset);
    }//ww w. j  a v  a 2  s .c  o m
    if (this.candlestickChart == null) {
        this.candlestickChart = this.createCandlestickChart(this.priceOHLCDataset);
    }

    final TAEx taEx = TAEx.newInstance(TA.MACD, period);
    if (show) {
        if (price_volume_ta_map.containsKey(taEx) == false) {
            final MACD.ChartResult macdChartResult = org.yccheok.jstock.charting.TechnicalAnalysis
                    .createMACD(this.chartDatas, getMACDKey(period), period);

            // MACD!
            NumberAxis rangeAxis1 = new NumberAxis(GUIBundle.getString("ChartJDialog_MACD"));
            rangeAxis1.setAutoRangeIncludesZero(false); // override default
            rangeAxis1.setLowerMargin(0.40); // to leave room for volume bars
            DecimalFormat format = new DecimalFormat("0.00#");
            rangeAxis1.setNumberFormatOverride(format);

            final ValueAxis timeAxis = new DateAxis(GUIBundle.getString("ChartJDialog_Date"));
            timeAxis.setLowerMargin(0.02); // reduce the default margins
            timeAxis.setUpperMargin(0.02);

            XYPlot plot = new XYPlot(macdChartResult.outMACD, timeAxis, rangeAxis1, null);

            XYItemRenderer renderer1 = new XYLineAndShapeRenderer(true, false);
            renderer1.setBaseToolTipGenerator(
                    new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                            new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00#")));
            plot.setRenderer(0, renderer1);
            org.yccheok.jstock.charting.Utils.setPriceSeriesPaint(renderer1);

            // MACD SIGNAL!
            plot.setDataset(1, macdChartResult.outMACDSignal);
            XYItemRenderer renderer2 = new XYLineAndShapeRenderer(true, false);
            renderer2.setBaseToolTipGenerator(
                    new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                            new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00#")));
            plot.setRenderer(1, renderer2);

            // VOLUME!
            //plot.setRangeAxis(1, rangeAxis1);
            plot.setDataset(2, macdChartResult.outMACDHist);
            //plot.mapDatasetToRangeAxis(1, 1);

            XYBarRenderer renderer3 = new XYBarRenderer(0.20);

            renderer3.setBaseToolTipGenerator(
                    new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                            new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0,000.00")));
            plot.setRenderer(2, renderer3);

            price_volume_ta_map.put(taEx, plot);
        }

        if (candlestick_ta_map.containsKey(taEx) == false) {
            try {
                /* Not sure why. I cannot make priceVolumeChart and candlestickChart sharing the same
                 * plot. If not, this will inhibit incorrect zooming behavior.
                 */
                candlestick_ta_map.put(taEx, (XYPlot) price_volume_ta_map.get(taEx).clone());
            } catch (CloneNotSupportedException ex) {
                log.error(null, ex);
            }
        }

        if (this.activeTAExs.contains(taEx) == false) {
            // Avoid duplication.
            final XYPlot price_volume_ta = price_volume_ta_map.get(taEx);
            final XYPlot candlestick_ta = candlestick_ta_map.get(taEx);

            final CombinedDomainXYPlot cplot0 = (CombinedDomainXYPlot) this.priceVolumeChart.getPlot();
            final CombinedDomainXYPlot cplot1 = (CombinedDomainXYPlot) this.candlestickChart.getPlot();
            if (price_volume_ta != null)
                cplot0.add(price_volume_ta, 1); // weight is 1.
            if (candlestick_ta != null)
                cplot1.add(candlestick_ta, 1); // weight is 1.
            org.yccheok.jstock.charting.Utils.applyChartThemeEx(this.priceVolumeChart);
            org.yccheok.jstock.charting.Utils.applyChartThemeEx(this.candlestickChart);
        }
    } else {
        final CombinedDomainXYPlot cplot0 = (CombinedDomainXYPlot) this.priceVolumeChart.getPlot();
        final CombinedDomainXYPlot cplot1 = (CombinedDomainXYPlot) this.candlestickChart.getPlot();
        final XYPlot price_volume_ta = price_volume_ta_map.get(taEx);
        final XYPlot candlestick_ta = candlestick_ta_map.get(taEx);

        if (price_volume_ta != null)
            cplot0.remove(price_volume_ta);
        if (candlestick_ta != null)
            cplot1.remove(candlestick_ta);
    }

    if (show && this.activeTAExs.contains(taEx) == false) {
        this.activeTAExs.add(taEx);
        JStock.instance().getChartJDialogOptions().add(taEx);
    } else if (!show) {
        this.activeTAExs.remove(taEx);
        JStock.instance().getChartJDialogOptions().remove(taEx);
    }
}