Package org.hbaseexplorer.components

Source Code of org.hbaseexplorer.components.EditTableData

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

/*
* EditTableData.java
*
* Created on May 21, 2010, 12:26:14 AM
*/

package org.hbaseexplorer.components;

import java.awt.Component;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Put;
import org.hbaseexplorer.HBaseExplorerApp;
import org.hbaseexplorer.components.renderers.EditTableCellRenderer;
import org.hbaseexplorer.datamodels.EditTableDataModel;
import org.hbaseexplorer.domain.FilterModel;
import org.hbaseexplorer.domain.HBTriplet;
import org.hbaseexplorer.domain.RowData;
import org.hbaseexplorer.domain.Table;
import org.hbaseexplorer.exception.ExplorerException;
import org.jdesktop.application.Action;

/**
*
* @author zaharije
*/
public class EditTableData extends javax.swing.JPanel {

    private Table table;
    private String rowKey;
    private FilterModel filterModel;

    /** Creates new form EditTableData */
    public EditTableData(Table table) {
        initComponents();
        this.table = table;
        this.filterModel = new FilterModel();

        //tableData.setDefaultRenderer(String.class, new EditTableCellRenderer());

        showData(0);
    }

    private void showData(int skip) {
        EditTableDataModel model = new EditTableDataModel(table, skip, rowKey, filterModel);
        autoResizeColWidth(tableData, model);

        TableColumnModel columnModel = tableData.getColumnModel();
        for (int i = 0; i < tableData.getColumnCount(); i++) {
            columnModel.getColumn(i).setCellRenderer(new EditTableCellRenderer());
        }

        rowKey = model.getRowKey();
        txtFieldRowKey.setText(rowKey);
    }

    public EditTableDataModel getTableModel() {
        return (EditTableDataModel)tableData.getModel();
    }


    private JTable autoResizeColWidth(JTable table, EditTableDataModel model) {
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        table.setModel(model);

        int margin = 5;

        for (int i = 0; i < table.getColumnCount(); i++) {
            int                     vColIndex = i;
            DefaultTableColumnModel colModel  = (DefaultTableColumnModel) table.getColumnModel();
            TableColumn             col       = colModel.getColumn(vColIndex);
            int                     width     = 0;

            // Get width of column header
            TableCellRenderer renderer = col.getHeaderRenderer();

            if (renderer == null) {
                renderer = table.getTableHeader().getDefaultRenderer();
            }

            Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false, false, 0, 0);

            width = comp.getPreferredSize().width;

            // Get maximum width of column data
            for (int r = 0; r < table.getRowCount(); r++) {
                renderer = table.getCellRenderer(r, vColIndex);
                comp     = renderer.getTableCellRendererComponent(table, table.getValueAt(r, vColIndex), false, false,
                        r, vColIndex);
                width = Math.max(width, comp.getPreferredSize().width);
            }

            // Add margin
            width += 2 * margin;

            // Set the width
            col.setPreferredWidth(width);
        }

        ((DefaultTableCellRenderer) table.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(
            SwingConstants.LEFT);

        // table.setAutoCreateRowSorter(true);
        table.getTableHeader().setReorderingAllowed(false);

        return table;
    }


    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jToolBar1 = new javax.swing.JToolBar();
        btnFirst = new javax.swing.JButton();
        btnNext = new javax.swing.JButton();
        txtFieldRowKey = new javax.swing.JTextField();
        btnGo = new javax.swing.JButton();
        jToolBar2 = new javax.swing.JToolBar();
        jButton1 = new javax.swing.JButton();
        btnAddColumn = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        btnAddRow = new javax.swing.JButton();
        btnRemoveRow = new javax.swing.JButton();
        checkBoxFilter = new javax.swing.JCheckBox();
        btnFilter = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tableData = new javax.swing.JTable();

        setName("Form"); // NOI18N

        jToolBar1.setRollover(true);
        jToolBar1.setName("jToolBar1"); // NOI18N

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(org.hbaseexplorer.HBaseExplorerApp.class).getContext().getActionMap(EditTableData.class, this);
        btnFirst.setAction(actionMap.get("fristBtnClickAction")); // NOI18N
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(org.hbaseexplorer.HBaseExplorerApp.class).getContext().getResourceMap(EditTableData.class);
        btnFirst.setText(resourceMap.getString("btnFirst.text")); // NOI18N
        btnFirst.setFocusable(false);
        btnFirst.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnFirst.setName("btnFirst"); // NOI18N
        btnFirst.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(btnFirst);

        btnNext.setAction(actionMap.get("nextBtnClickAction")); // NOI18N
        btnNext.setText(resourceMap.getString("btnNext.text")); // NOI18N
        btnNext.setFocusable(false);
        btnNext.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnNext.setName("btnNext"); // NOI18N
        btnNext.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(btnNext);

        txtFieldRowKey.setFont(resourceMap.getFont("txtFieldRowKey.font")); // NOI18N
        txtFieldRowKey.setText(resourceMap.getString("txtFieldRowKey.text")); // NOI18N
        txtFieldRowKey.setName("txtFieldRowKey"); // NOI18N
        jToolBar1.add(txtFieldRowKey);

        btnGo.setAction(actionMap.get("btnGoClickAction")); // NOI18N
        btnGo.setText(resourceMap.getString("btnGo.text")); // NOI18N
        btnGo.setFocusable(false);
        btnGo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnGo.setName("btnGo"); // NOI18N
        btnGo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(btnGo);

        jToolBar2.setRollover(true);
        jToolBar2.setName("jToolBar2"); // NOI18N

        jButton1.setAction(actionMap.get("btnSaveClickAction")); // NOI18N
        jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
        jButton1.setFocusable(false);
        jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton1.setName("jButton1"); // NOI18N
        jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar2.add(jButton1);

        btnAddColumn.setAction(actionMap.get("btnAddColumnClickAction")); // NOI18N
        btnAddColumn.setText(resourceMap.getString("btnAddColumn.text")); // NOI18N
        btnAddColumn.setFocusable(false);
        btnAddColumn.setHorizontalTextPosition(0);
        btnAddColumn.setName("btnAddColumn"); // NOI18N
        btnAddColumn.setVerticalTextPosition(3);
        jToolBar2.add(btnAddColumn);

        jButton2.setAction(actionMap.get("btnDeleteColumnActionClick")); // NOI18N
        jButton2.setText(resourceMap.getString("jButton2.text")); // NOI18N
        jButton2.setFocusable(false);
        jButton2.setHorizontalTextPosition(0);
        jButton2.setName("jButton2"); // NOI18N
        jButton2.setVerticalTextPosition(3);
        jToolBar2.add(jButton2);

        btnAddRow.setText(resourceMap.getString("btnAddRow.text")); // NOI18N
        btnAddRow.setEnabled(false);
        btnAddRow.setFocusable(false);
        btnAddRow.setHorizontalTextPosition(0);
        btnAddRow.setName("btnAddRow"); // NOI18N
        btnAddRow.setVerticalTextPosition(3);
        jToolBar2.add(btnAddRow);

        btnRemoveRow.setText(resourceMap.getString("btnRemoveRow.text")); // NOI18N
        btnRemoveRow.setEnabled(false);
        btnRemoveRow.setFocusable(false);
        btnRemoveRow.setHorizontalTextPosition(0);
        btnRemoveRow.setName("btnRemoveRow"); // NOI18N
        btnRemoveRow.setVerticalTextPosition(3);
        jToolBar2.add(btnRemoveRow);

        checkBoxFilter.setAction(actionMap.get("checkBoxFilter")); // NOI18N
        checkBoxFilter.setText(resourceMap.getString("checkBoxFilter.text")); // NOI18N
        checkBoxFilter.setFocusable(false);
        checkBoxFilter.setHorizontalTextPosition(0);
        checkBoxFilter.setName("checkBoxFilter"); // NOI18N
        checkBoxFilter.setVerticalTextPosition(3);
        jToolBar2.add(checkBoxFilter);

        btnFilter.setAction(actionMap.get("btnFilterClickAction")); // NOI18N
        btnFilter.setText(resourceMap.getString("btnFilter.text")); // NOI18N
        btnFilter.setEnabled(false);
        btnFilter.setFocusable(false);
        btnFilter.setHorizontalTextPosition(0);
        btnFilter.setName("btnFilter"); // NOI18N
        btnFilter.setVerticalTextPosition(3);
        jToolBar2.add(btnFilter);

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        tableData.setFont(resourceMap.getFont("tableData.font")); // NOI18N
        tableData.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        tableData.setName("tableData"); // NOI18N
        jScrollPane1.setViewportView(tableData);

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jToolBar1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 420, Short.MAX_VALUE)
            .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 420, Short.MAX_VALUE)
            .add(jToolBar2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 420, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(jToolBar1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 25, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jToolBar2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 25, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE))
        );
    }// </editor-fold>//GEN-END:initComponents

    @Action
    public void fristBtnClickAction() {
        rowKey = null;
        showData(0);
    }

    @Action
    public void nextBtnClickAction() {
        showData(1);
    }

    @Action
    public void btnSaveClickAction() {
        RowData changedData = getTableModel().getData().getChangedData();
        if (changedData.size() > 0) {
            try {
                Put put = changedData.convertToPut();
                table.getHTable().put(put);
                showData(0);
            } catch (IOException ex) {
                throw new ExplorerException("Error saving to table " + table.getFullName());
            }
        }
        else {
            JOptionPane.showMessageDialog(this, "Nothing to save.");
        }
    }

    @Action
    public void btnAddColumnClickAction() {
        JFrame mainFrame = HBaseExplorerApp.getApplication().getMainFrame();
        NewColumnDialog dialog = new NewColumnDialog(mainFrame, table);
        dialog.setLocationRelativeTo(mainFrame);
        HBaseExplorerApp.getApplication().show(dialog);

        HBTriplet triplet = dialog.getTriplet();
        if (triplet != null) {
            try {
                Put put = new Put(rowKey.getBytes());
                put.add(triplet.getFamily(), triplet.getQualifier(), triplet.getValue());
                table.getHTable().put(put);
                showData(0);
            } catch (IOException ex) {
                throw new ExplorerException("Error adding column : " + triplet);
            }
        }
       
    }

    @Action
    public void btnDeleteColumnActionClick() {
        int rowId = tableData.getSelectedRow();
        if (rowId != -1) {
            String family = tableData.getModel().getValueAt(rowId, 0).toString();
            String column = tableData.getModel().getValueAt(rowId, 1).toString();

            int result = JOptionPane.showConfirmDialog(
                    this,
                    "Are you sure you wanna to delete\n" + rowKey +"\n" + family + ":" + column,
                    "Delete column",
                    JOptionPane.YES_NO_OPTION
                   );
            if (result == JOptionPane.YES_OPTION) {
                Delete delete = new Delete(rowKey.getBytes());
                delete.deleteColumns(family.getBytes(), column.getBytes());
                try {
                    table.getHTable().delete(delete);
                } catch (IOException ex) {
                    throw new ExplorerException("Error deleting " + rowKey + "@" + family + ":" + column);
                }
                showData(0);
            }
        }
    }

    @Action
    public void btnGoClickAction() {
        rowKey = txtFieldRowKey.getText();
        showData(0);
    }

    @Action
    public void checkBoxFilter() {
        btnFilter.setEnabled(checkBoxFilter.isSelected());
        filterModel.setEnabled(checkBoxFilter.isSelected());
        showData(0);
    }

    @Action
    public void btnFilterClickAction() {
        JFrame mainFrame = HBaseExplorerApp.getApplication().getMainFrame();
        FilterDialog dialog = new FilterDialog(mainFrame, table);
        dialog.setFilterModel(filterModel);
        dialog.setLocationRelativeTo(mainFrame);
        HBaseExplorerApp.getApplication().show(dialog);
        filterModel = dialog.getFilterModel();

        showData(0);
    }



    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAddColumn;
    private javax.swing.JButton btnAddRow;
    private javax.swing.JButton btnFilter;
    private javax.swing.JButton btnFirst;
    private javax.swing.JButton btnGo;
    private javax.swing.JButton btnNext;
    private javax.swing.JButton btnRemoveRow;
    private javax.swing.JCheckBox checkBoxFilter;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JToolBar jToolBar1;
    private javax.swing.JToolBar jToolBar2;
    private javax.swing.JTable tableData;
    private javax.swing.JTextField txtFieldRowKey;
    // End of variables declaration//GEN-END:variables

}
TOP

Related Classes of org.hbaseexplorer.components.EditTableData

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.