Package cli_fmw.directory.editors

Source Code of cli_fmw.directory.editors.TableModelDirectoryEdit

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package cli_fmw.directory.editors;

import cli_fmw.delegate.directory.simple.DirectorySimple;
import cli_fmw.delegate.directory.simple.DirectorySimpleItem;
import cli_fmw.utils.MessageBox;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.Selector;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

/**
*
* @author vip
*/
public class TableModelDirectoryEdit extends AbstractTableModel{
    public static final int COLCOUNT = 5;
    public static final int COL_ID = 0;
    public static final int COL_TITLE = 1;
    public static final int COL_EXT_CODE = 2;
    public static final int COL_DIRTY = 3;
    public static final int COL_TRASH = 4;
   
    DirectorySimple directory;
    String filter;
    ArrayList<DirectorySimpleItem> itemList = new ArrayList<DirectorySimpleItem>();

    public TableModelDirectoryEdit(DirectorySimple directory, String filter) throws ClipsException {
        this.directory = directory;
        this.filter = filter;
       
        itemList.clear();
        if (directory != null) {
            Selector iie = directory.getItems();
            for (int i = 0; i < iie.size(); i++) {
                DirectorySimpleItem item = (DirectorySimpleItem) iie.get(i);
                if (satisfyFilter(item)) {
                    itemList.add(item);
                }
            }
        }
    }
   
   
    @Override
    public int getRowCount() {
        return itemList.size();
    }

    @Override
    public int getColumnCount() {
        return COLCOUNT;
    }

    @Override
    public String getColumnName(int col) {
        switch (col) {
            case COL_ID : return "ID";
            case COL_TITLE: return "Наименование";
            case COL_EXT_CODE: return "Внешний ключ";
            case COL_DIRTY: return "Новая запись";
            case COL_TRASH: return "Удален";
        }
        return null;
    }

    @Override
    public Class<?> getColumnClass(int col) {
        if (col == COL_DIRTY || col == COL_TRASH) {
            return Boolean.class;
        }
        return super.getColumnClass(col);
    }

   
    @Override
    public Object getValueAt(int row, int col) {
        switch (col) {
            case COL_ID : return itemList.get(row).getID();
            case COL_TITLE: return itemList.get(row).getTitle();
            case COL_EXT_CODE: return itemList.get(row).getExtKey();
            case COL_DIRTY: return itemList.get(row).getDirty();
            case COL_TRASH: return !itemList.get(row).isVisible();
            default: return null;
        }
    }

    public DirectorySimpleItem getItemAt(int row) {
        return itemList.get(row);
    }
   
    @Override
    public boolean isCellEditable(int row, int col) {
        if (itemList.get(row).getID() == 0) {
            return false;
        }
        if (col == COL_ID) {
            return false;
        }
        return true;
    }

    @Override
    public void setValueAt(Object value, int row, int col) {
        try {
            switch (col) {
                case COL_TITLE: {
                    itemList.get(row).setTitle((String) value);
                    break;
                }
                case COL_EXT_CODE: {
                    itemList.get(row).setExtKey((String) value);
                    break;
                }
                case COL_DIRTY: {
                    itemList.get(row).setDirty((Boolean) value);
                    break;
                }
                case COL_TRASH: {
                    itemList.get(row).setVisible(!(Boolean) value);
                    break;
                }
            }
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }
   
   
    /**
     * возвращает индекс в соответствии с фильтром
     * @param index
     * @return
     */
    private DirectorySimpleItem getItemByIndex(int index) throws ClipsException {
        /*SelectorEditable iie = directory.getItems();
        int count = -1;
        for (int i = 0; i < iie.size(); i++) {
            DirectorySimpleItem item = (DirectorySimpleItem) iie.get(i);
            if (satisfyFilter(item)) {
                count++;
            }
            if (count == index) {
                return item;
            }
        }*/
        return itemList.get(index);
//        throw new ClipsException("Неизвестный элемент справичника с фильтром",ex);
    }
   
    private boolean satisfyFilter(DirectorySimpleItem item) {
        return item.getTitle().indexOf(filter) >= 0;
    }
}
TOP

Related Classes of cli_fmw.directory.editors.TableModelDirectoryEdit

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.