package _VisualDVM.ProjectData.SapforData.Arrays;
import Common.Database.Tables.DataSet;
import Common.Visual.DataSetControlForm;
import _VisualDVM.Current;
import _VisualDVM.Global;
import _VisualDVM.GlobalData.Settings.SettingName;
import _VisualDVM.Passes.PassCode;

import java.util.Vector;

import static Common.Visual.Tables.TableEditors.EditorHyperlinks;
import static Common.Visual.Tables.TableRenderers.RendererHiddenList;
import static Common.Visual.Tables.TableRenderers.RendererHyperlinks;
public class ArraysSet extends DataSet<Long, ProjectArray> {
    public ArraysSet() {
        super(Long.class, ProjectArray.class);
    }
    @Override
    public String getSingleDescription() {
        return "массив";
    }
    @Override
    public String getPluralDescription() {
        return "объявленные массивы";
    }
    @Override
    public Current CurrentName() {
        return Current.ProjectArray;
    }
    @Override
    protected DataSetControlForm createUI() {
        return new DataSetControlForm(this) {
            @Override
            public boolean hasCheckBox() {
                return true;
            }
            @Override
            protected void AdditionalInitColumns() {
                columns.get(0).setVisible(false);
                if ((Global.mainModule.getDb()).settings.get(SettingName.ShowFullArraysDeclarations).toBoolean()) {
                    columns.get(4).setRenderer(RendererHyperlinks);
                    columns.get(4).setEditor(EditorHyperlinks);
                } else {
                    columns.get(4).setRenderer(RendererHiddenList);
                    columns.get(4).setMaxWidth(200);
                }
            }
        };
    }
    @Override
    public String[] getUIColumnNames() {
        return new String[]{
                "Имя", "Область описания", "Файлы объявления", "Размерность", "Размер элемента(байт)", "Область распараллеливания"
        };
    }
    @Override
    public Object getFieldAt(ProjectArray object, int columnIndex) {
        switch (columnIndex) {
            case 1:
                return object.State;
            case 2:
                return object.GetShortNameWithDim();
            case 3:
                return object.locName + " : " + object.location;
            case 4:
                return object.GetDeclPlacesList();
            case 5:
                return object.dimSize;
            case 6:
                return object.typeSize;
            case 7:
                return object.GetRegionsText();
            default:
                return null;
        }
    }
    @Override
    public void CheckAll(boolean flag) {
        Global.mainModule.getPass(PassCode.MassSelectArrays).Do(flag, new Vector(Global.mainModule.getProject().declaratedArrays.Data.values()));
    }
    @Override
    public Class getMenuBarClass() {
        return ArraysMenuBar.class;
    }
}
