All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jdplus.toolkit.desktop.plugin.workspace.ui.WorkspaceTsRegressionTopComponent Maven / Gradle / Ivy

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jdplus.toolkit.desktop.plugin.workspace.ui;

import jdplus.toolkit.desktop.plugin.TsDynamicProvider;
import jdplus.toolkit.desktop.plugin.TsManager;
import jdplus.toolkit.desktop.plugin.ui.processing.DefaultProcessingViewer;
import jdplus.toolkit.desktop.plugin.ui.processing.TsRegressionProcessingViewer;
import jdplus.toolkit.desktop.plugin.workspace.WorkspaceFactory;
import jdplus.toolkit.desktop.plugin.workspace.WorkspaceItem;
import jdplus.toolkit.base.api.timeseries.MultiTsDocument;
import jdplus.toolkit.base.api.timeseries.Ts;
import jdplus.toolkit.base.api.timeseries.TsInformationType;

import java.beans.PropertyChangeEvent;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Jean Palate
 * @param 
 */
public abstract class WorkspaceTsRegressionTopComponent> extends WorkspaceTopComponent {

    private TsRegressionProcessingViewer panel;

    protected WorkspaceTsRegressionTopComponent(WorkspaceItem doc) {
        super(doc);
    }

    @Override
    public void refresh() {
        panel.onDocumentChanged();
    }

    protected abstract TsRegressionProcessingViewer initViewer();

    @Override
    public void componentOpened() {
        super.componentOpened();
        panel = initViewer();
        add(panel);
        panel.initialize();
        panel.doLayout();
        panel.refreshHeader();
        WorkspaceItem d = getDocument();
        panel.addPropertyChangeListener((PropertyChangeEvent arg0) -> {
            switch (arg0.getPropertyName()) {
                case DefaultProcessingViewer.INPUT_CHANGED -> {
                    Object nval = arg0.getNewValue();
                    if (nval instanceof List) {
                        setTs((List) nval);
                    }
                }
                case DefaultProcessingViewer.SPEC_CHANGED -> {
                    WorkspaceFactory.Event ev = new WorkspaceFactory.Event(d.getOwner(), d.getId(), WorkspaceFactory.Event.ITEMCHANGED, WorkspaceTsRegressionTopComponent.this);
                    WorkspaceFactory.getInstance().notifyEvent(ev);
                }
            }
        });

        TsDynamicProvider.onDocumentOpened(panel.getDocument());
        // TODO add custom code on component opening
    }

    @Override
    public void componentClosed() {
        if (panel != null) {
            panel.removeListeners();
            panel.dispose();
        }
        TsDynamicProvider.onDocumentClosing(panel.getDocument());
        super.componentClosed();
    }

    @Override
    public boolean hasContextMenu() {
        return true;
    }

    public void setTs(List lts) {

        List clts = new ArrayList<>();

        for (Ts ts : lts) {
            Ts cts;
            if (TsManager.isDynamic(ts)) {
                cts = ts.freeze();
            } else {
                cts = ts.load(TsInformationType.All, TsManager.get());
            }
            clts.add(cts);
        }
        panel.getDocument().set(clts);
        panel.updateButtons(null);
        WorkspaceItem d = getDocument();
        d.setDirty();
        WorkspaceFactory.Event ev = new WorkspaceFactory.Event(d.getOwner(), d.getId(), WorkspaceFactory.Event.ITEMCHANGED, this);
        WorkspaceFactory.getInstance().notifyEvent(ev);

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy