001/* 002 * To change this template, choose Tools | Templates 003 * and open the template in the editor. 004 */ 005package csheets.ext.database.ui; 006 007import csheets.SpreadsheetAppEvent; 008import csheets.SpreadsheetAppListener; 009import csheets.core.Cell; 010import csheets.core.Spreadsheet; 011import csheets.core.formula.compiler.FormulaCompilationException; 012import csheets.ext.database.controller.ControllerImport; 013import java.awt.BorderLayout; 014import java.awt.Color; 015import java.awt.Container; 016import java.awt.Dimension; 017import java.awt.GridLayout; 018import java.awt.event.ActionEvent; 019import java.awt.event.ActionListener; 020import java.io.FileNotFoundException; 021import java.util.ArrayList; 022import javax.swing.JButton; 023import javax.swing.JFrame; 024import javax.swing.JLabel; 025import javax.swing.JList; 026import javax.swing.JPanel; 027import javax.swing.JScrollPane; 028import javax.swing.ListSelectionModel; 029import csheets.ext.database.ui.UIImport; 030import csheets.ui.ctrl.UIController; 031import java.util.logging.Level; 032import java.util.logging.Logger; 033import javax.swing.JOptionPane; 034 035/** 036 * Table selection GUI (to select a select from the database) 037 * @author João Carreira 038 */ 039public class UITableSelect extends JFrame 040{ 041 /* labels */ 042 JLabel sysMsg = new JLabel("Select one table from above"); 043 044 /* buttons */ 045 private JButton btnOk = new JButton("OK"); 046 private JButton btnCancel = new JButton("Cancel"); 047 private JButton btnPreview = new JButton("Preview"); 048 049 /* array with table list */ 050 private String[] tableArray; 051 private ArrayList arrayQueries; 052 053 /* array with database table content */ 054 private String[][] tableData; 055 056 /* tablelist */ 057 private JList tableList; 058 059 private ControllerImport ctrlImp; 060 061 private UIController uiCtrl; 062 063 private Spreadsheet spreadSheet; 064 065 /** 066 * constructor of the GUI for table selection 067 * @param dbName name of the database 068 * @throws Exception 069 */ 070 public UITableSelect(Spreadsheet spreadSheet, String dbName, ControllerImport ctrlImp) 071 { 072 /* window title */ 073 super("Select a table from " + dbName); 074 075 /* labels */ 076 sysMsg.setForeground(Color.BLUE); 077 078 this.ctrlImp = ctrlImp; 079 080 this.spreadSheet = spreadSheet; 081 082 /* gets the table list */ 083 tableArray = ctrlImp.getTableList(); 084 085 /* Jlist with table list for database */ 086 tableList = new JList(tableArray); 087 tableList.setVisibleRowCount(5); 088 tableList.setPreferredSize(new Dimension(100,100)); 089 tableList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 090 tableList.setSelectedIndex(0); 091 JScrollPane scroll = new JScrollPane(tableList); 092 093 /* main panel */ 094 JPanel mainPanel = new JPanel(new GridLayout(3,3)); 095 096 /* list panel */ 097 JPanel anotherPanel = new JPanel(); 098 anotherPanel.add(scroll); 099 anotherPanel.add(sysMsg); 100 101 /* sysMsg panel */ 102 JPanel msgPanel = new JPanel(); 103 msgPanel.add(sysMsg); 104 105 /* button panel */ 106 JPanel buttonPanel = new JPanel(); 107 buttonPanel.add(btnOk); 108// buttonPanel.add(btnPreview); 109 buttonPanel.add(btnCancel); 110 111 /* setting up action listeners */ 112 HandlesEvent t = new HandlesEvent(); 113 btnOk.addActionListener(t); 114 btnCancel.addActionListener(t); 115// btnPreview.addActionListener(t); 116 117 /* putting everything together */ 118 Container c = getContentPane(); 119 mainPanel.add(anotherPanel); 120 mainPanel.add(msgPanel, BorderLayout.CENTER); 121 mainPanel.add(buttonPanel, BorderLayout.SOUTH); 122 c.add(mainPanel); 123 124 /* other window settings */ 125 setSize(300,350); 126 setVisible(true); 127 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 128 setLocationRelativeTo(null); 129 setResizable(false); 130 } 131 132 133 /** 134 * handles events on different GUI objects 135 */ 136 public class HandlesEvent implements ActionListener 137 { 138 @Override 139 public void actionPerformed(ActionEvent e) 140 { 141 boolean flag = false; 142 143 /* ok button */ 144 if(e.getSource() == btnOk) 145 { 146 /* loads a given database table to the table data array */ 147 tableData = ctrlImp.loadTable(tableList.getSelectedValue().toString()); 148 149 /* launches window for user to confirm import */ 150 ConfirmImportUI confImpUI = new ConfirmImportUI(spreadSheet, tableData); 151 dispose(); 152 153 } 154 /* cancel button */ 155 else if(e.getSource() == btnCancel) 156 { 157 dispose(); 158 } 159 } 160 } 161} 162