/** * FindNameView.java * Created On 2007, May 11, 2007 3:11:55 PM * @author E. Rajasekar */ package app.astrosoft.ui.view; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseListener; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JTabbedPane; import javax.swing.border.EtchedBorder; import javax.swing.border.LineBorder; import app.astrosoft.consts.DisplayStrings; import app.astrosoft.consts.Language; import app.astrosoft.consts.TableStyle; import app.astrosoft.persistence.NumerologicalName; import app.astrosoft.service.NumeroNameService; import app.astrosoft.test.NumeroNameTest; import app.astrosoft.ui.comp.AstrosoftTabbedPane; import app.astrosoft.ui.comp.EmptyPagination; import app.astrosoft.ui.comp.NameAddPanel; import app.astrosoft.ui.comp.NameSearchPanel; import app.astrosoft.ui.comp.NumeroNamePagination; import app.astrosoft.ui.comp.Pagination; import app.astrosoft.ui.comp.PagingPanel; import app.astrosoft.ui.comp.PopupListener; import app.astrosoft.ui.comp.TitledTable; import app.astrosoft.ui.table.AstrosoftTable; import app.astrosoft.ui.table.AstrosoftTableModel; import app.astrosoft.ui.table.TableData; import app.astrosoft.ui.table.TableRowData; import app.astrosoft.ui.table.TableDataFactory; import app.astrosoft.ui.table.TableRowSelectionListener; import app.astrosoft.ui.util.UIConsts; public class FindNameView extends AstrosoftView { private static final Logger log = Logger.getLogger(FindNameView.class.getName()); private static final Dimension size = new Dimension(700, 436); private static final Dimension tableSize = size; private static final Point loc = new Point(50, 10); private NameSearchPanel searchPanel; private NameAddPanel addPanel; private AstrosoftTable nameTable; private JButton deleteButton; private JPanel tablePanel; private PagingPanel<NumerologicalName> pagingPanel; private int pageLength = 15; private TableData<? extends TableRowData> data = TableDataFactory.emptyTableData(); AstrosoftTableModel nameModel; public FindNameView() { super(DisplayStrings.FIND_NAME_STR.toString(), size, loc); searchPanel = new NameSearchPanel(new ActionListener(){ public void actionPerformed(ActionEvent e) { searchButtonClicked(); } }); addPanel = new NameAddPanel(new ActionListener(){ public void actionPerformed(ActionEvent e) { addButtonClicked(); } }); constructTabbedPane(); constructNameTable(); } private void constructTabbedPane() { JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.addTab(DisplayStrings.SEARCH_STR.toString() , searchPanel); tabbedPane.addTab(DisplayStrings.ADD_STR.toString() , addPanel); add(tabbedPane, BorderLayout.PAGE_START); } private void constructNameTable() { nameModel = new AstrosoftTableModel(data, NumerologicalName.getColumnMetaData()); nameTable = new AstrosoftTable(nameModel, TableStyle.MULTI_ROW_GRID); tablePanel = new TitledTable(null, nameTable, tableSize, createFooter()); add(tablePanel, BorderLayout.CENTER); nameTable.addRowSelectionListener(new TableRowSelectionListener<NumerologicalName>(){ public void selectionChanged(TableData<NumerologicalName> data) { if (data.getRowCount() > 0){ NumerologicalName firstRow = data.getRow(0); addPanel.setValues(firstRow.getName(), firstRow.getNumeroVal(), firstRow.getNumeroNum()); } } }); tablePanel.setVisible(false); } private JPanel createFooter() { deleteButton = new JButton(DisplayStrings.DELETE_STR.toString()); JPanel footer = new JPanel(new BorderLayout()); JPanel p = new JPanel(); p.setBackground(UIConsts.THEME_CLR); p.add(deleteButton); footer.add(p, BorderLayout.CENTER); createPagingPanel(footer); //deleteButton.setEnabled(false); deleteButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { log.fine("Delete Button Clicked"); TableData <NumerologicalName> selected = nameTable.getSelectedData(); List <NumerologicalName> names = new ArrayList<NumerologicalName>(); for(int i = 0 ; i < selected.getRowCount(); i++){ names.add(selected.getRow(i)); } NumeroNameService.deleteNames(names); searchButtonClicked(); } }); return footer; } private void createPagingPanel(JPanel footer) { Pagination<NumerologicalName> pagination = EmptyPagination.getInstance(pageLength); pagingPanel = new PagingPanel<NumerologicalName>(nameModel, pagination); footer.add(pagingPanel, BorderLayout.EAST); } private void searchButtonClicked() { log.fine("Name Search Button Clicked"); setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); tablePanel.setVisible(true); pagingPanel.setPagination(new NumeroNamePagination(searchPanel.getName(), searchPanel.getNumeroValue(), searchPanel.getNumeroNumber(), searchPanel.getOperator1(), searchPanel.getOperator2(),pageLength)); setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } private void addButtonClicked() { log.fine("Name Add Button Clicked"); NumeroNameService.addName(addPanel.getName()); addPanel.resetValues(); searchButtonClicked(); } }