001/** 002 * Copyright (C) 2014 Universidade de Aveiro, DETI/IEETA, Bioinformatics Group - http://bioinformatics.ua.pt/ 003 * 004 * This file is part of Dicoogle/dicoogle. 005 * 006 * Dicoogle/dicoogle is free software: you can redistribute it and/or modify 007 * it under the terms of the GNU General Public License as published by 008 * the Free Software Foundation, either version 3 of the License, or 009 * (at your option) any later version. 010 * 011 * Dicoogle/dicoogle is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 014 * GNU General Public License for more details. 015 * 016 * You should have received a copy of the GNU General Public License 017 * along with Dicoogle. If not, see <http://www.gnu.org/licenses/>. 018 */ 019/* 020 * SearchTips.java 021 * 022 * Created on December 8, 2007, 12:53 AM 023 */ 024 025package pt.ua.dicoogle.rGUI.client.windows; 026 027import java.rmi.RemoteException; 028import org.slf4j.Logger; 029import org.slf4j.LoggerFactory; 030import org.slf4j.Logger; 031import org.slf4j.LoggerFactory; 032import pt.ua.dicoogle.*; 033import java.awt.Image; 034import java.awt.Toolkit; 035import java.util.HashMap; 036import java.util.Iterator; 037import java.util.Set; 038import java.util.TreeSet; 039import javax.swing.DefaultListModel; 040import javax.swing.JTextField; 041import pt.ua.dicoogle.rGUI.client.UserRefs; 042import pt.ua.dicoogle.rGUI.interfaces.controllers.ISearch; 043 044/** 045 * 046 * @author filipe 047 */ 048@Deprecated 049public class SearchTips extends javax.swing.JFrame { 050 private MainWindow aThis = MainWindow.getInstance(); 051 private JTextField query = null; 052 private ISearch search; 053 private HashMap tags; 054 055 public SearchTips(JTextField query) 056 { 057 try { 058 this.query = query; 059 initComponents(); 060 061 //this.aThis.setEnabled(false); 062 this.search = UserRefs.getInstance().getSearch(); 063 064 tags = search.getTagList(); 065 066 Image image = Toolkit.getDefaultToolkit().getImage(Thread.currentThread().getContextClassLoader().getResource("trayicon.gif")); 067 this.setIconImage(image); 068 069 updateList(null); 070 071 } catch (RemoteException ex) { 072 LoggerFactory.getLogger(SearchTips.class).error(ex.getMessage(), ex); 073 } 074 075 } 076 077 /** This method is called from within the constructor to 078 * initialize the form. 079 * WARNING: Do NOT modify this code. The content of this method is 080 * always regenerated by the Form Editor. 081 */ 082 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents 083 private void initComponents() { 084 085 jLabel1 = new javax.swing.JLabel(); 086 jLabel2 = new javax.swing.JLabel(); 087 jLabel3 = new javax.swing.JLabel(); 088 jLabel4 = new javax.swing.JLabel(); 089 jLabel5 = new javax.swing.JLabel(); 090 jButton1 = new javax.swing.JButton(); 091 jScrollPane1 = new javax.swing.JScrollPane(); 092 jListElements = new javax.swing.JList(); 093 jTextFieldFiltering = new javax.swing.JTextField(); 094 jLabel6 = new javax.swing.JLabel(); 095 jButtonInsertQuery = new javax.swing.JButton(); 096 jButton3 = new javax.swing.JButton(); 097 098 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 099 setTitle("Search Tips"); 100 setResizable(false); 101 addWindowListener(new java.awt.event.WindowAdapter() { 102 public void windowClosing(java.awt.event.WindowEvent evt) { 103 formWindowClosing(evt); 104 } 105 }); 106 107 jLabel1.setText("Search tips:"); 108 109 jLabel2.setText("With default search, you can use boolean expressions, with operators like AND, OR."); 110 111 jLabel3.setText("You can provide specific fields value. For example:"); 112 113 jLabel4.setText("PatientName:\"John Doe\""); 114 115 jLabel5.setText("The fields supported are:"); 116 117 jButton1.setText("Close"); 118 jButton1.addActionListener(new java.awt.event.ActionListener() { 119 public void actionPerformed(java.awt.event.ActionEvent evt) { 120 jButton1ActionPerformed(evt); 121 } 122 }); 123 124 jListElements.addMouseListener(new java.awt.event.MouseAdapter() { 125 public void mouseClicked(java.awt.event.MouseEvent evt) { 126 jListElementsMouseClicked(evt); 127 } 128 }); 129 jScrollPane1.setViewportView(jListElements); 130 131 jTextFieldFiltering.addKeyListener(new java.awt.event.KeyAdapter() { 132 public void keyReleased(java.awt.event.KeyEvent evt) { 133 jTextFieldFilteringKeyReleased(evt); 134 } 135 }); 136 137 jLabel6.setText("Insert the tag name:"); 138 139 jButtonInsertQuery.setText("Insert into Query"); 140 jButtonInsertQuery.addActionListener(new java.awt.event.ActionListener() { 141 public void actionPerformed(java.awt.event.ActionEvent evt) { 142 jButtonInsertQueryActionPerformed(evt); 143 } 144 }); 145 146 jButton3.setText("See Details"); 147 jButton3.setEnabled(false); 148 149 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 150 getContentPane().setLayout(layout); 151 layout.setHorizontalGroup( 152 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 153 .addGroup(layout.createSequentialGroup() 154 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 155 .addGroup(layout.createSequentialGroup() 156 .addContainerGap() 157 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 158 .addComponent(jLabel1) 159 .addGroup(layout.createSequentialGroup() 160 .addGap(12, 12, 12) 161 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 162 .addComponent(jLabel2) 163 .addComponent(jLabel3) 164 .addGroup(layout.createSequentialGroup() 165 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) 166 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() 167 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 168 .addComponent(jLabel6, javax.swing.GroupLayout.Alignment.LEADING) 169 .addComponent(jLabel5)) 170 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 171 .addComponent(jTextFieldFiltering)) 172 .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 354, javax.swing.GroupLayout.PREFERRED_SIZE)) 173 .addGap(30, 30, 30) 174 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 175 .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 176 .addComponent(jButtonInsertQuery, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))))) 177 .addGroup(layout.createSequentialGroup() 178 .addGap(130, 130, 130) 179 .addComponent(jLabel4)) 180 .addGroup(layout.createSequentialGroup() 181 .addGap(182, 182, 182) 182 .addComponent(jButton1))) 183 .addContainerGap()) 184 ); 185 layout.setVerticalGroup( 186 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 187 .addGroup(layout.createSequentialGroup() 188 .addContainerGap() 189 .addComponent(jLabel1) 190 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 191 .addComponent(jLabel2) 192 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 193 .addComponent(jLabel3) 194 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 195 .addComponent(jLabel4) 196 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 197 .addComponent(jLabel5) 198 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 199 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 200 .addComponent(jLabel6) 201 .addComponent(jTextFieldFiltering, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 202 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 203 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 204 .addGroup(layout.createSequentialGroup() 205 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 117, javax.swing.GroupLayout.PREFERRED_SIZE) 206 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 207 .addComponent(jButton1)) 208 .addGroup(layout.createSequentialGroup() 209 .addComponent(jButtonInsertQuery) 210 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 211 .addComponent(jButton3))) 212 .addContainerGap()) 213 ); 214 215 pack(); 216 }// </editor-fold>//GEN-END:initComponents 217 218 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed 219 this.setVisible(false); 220 aThis.setEnabled(true); 221 aThis.toFront(); 222 this.dispose(); 223 }//GEN-LAST:event_jButton1ActionPerformed 224 225 private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing 226 this.setVisible(false); 227 aThis.setEnabled(true); 228 aThis.toFront(); 229 }//GEN-LAST:event_formWindowClosing 230 231 private void jButtonInsertQueryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInsertQueryActionPerformed 232 String tagName = (String) jListElements.getSelectedValue() ; 233 234 if (tagName == null) 235 return; 236 237 if(query.getText().equals("")) 238 query.setText(tagName +":"); 239 else 240 query.setText(query.getText()+ " " + tagName +":"); 241 }//GEN-LAST:event_jButtonInsertQueryActionPerformed 242 243 private void jListElementsMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jListElementsMouseClicked 244 if (evt.getClickCount() == 2) 245 jButtonInsertQuery.doClick(); 246 }//GEN-LAST:event_jListElementsMouseClicked 247 248 private void jTextFieldFilteringKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldFilteringKeyReleased 249 updateList(jTextFieldFiltering.getText()); 250 }//GEN-LAST:event_jTextFieldFilteringKeyReleased 251 252 253 254 private void updateList(String prefix) 255 { 256 257 DefaultListModel listModel; 258 listModel = new DefaultListModel(); 259 260 Set<String> set = getTagList(prefix); 261 262 Iterator<String> it = (Iterator<String>) set.iterator(); 263 while(it.hasNext()) 264 { 265 String tagName = it.next(); 266 listModel.addElement(tagName); 267 } 268 jListElements.setModel(listModel); 269 270 } 271 272 273 private Set<String> getTagList(String prefix) { 274 Set<String> set = new TreeSet<String>(); 275 276 Set<String> sset = tags.keySet(); 277 278 for (String item : sset) { 279 if (prefix != null && !prefix.equals("")) { 280 if (item.toLowerCase().startsWith(prefix.toLowerCase())) { 281 set.add(item); 282 } 283 } else { 284 set.add(item); 285 } 286 } 287 288 return set; 289 } 290 291 292 293 // Variables declaration - do not modify//GEN-BEGIN:variables 294 private javax.swing.JButton jButton1; 295 private javax.swing.JButton jButton3; 296 private javax.swing.JButton jButtonInsertQuery; 297 private javax.swing.JLabel jLabel1; 298 private javax.swing.JLabel jLabel2; 299 private javax.swing.JLabel jLabel3; 300 private javax.swing.JLabel jLabel4; 301 private javax.swing.JLabel jLabel5; 302 private javax.swing.JLabel jLabel6; 303 private javax.swing.JList jListElements; 304 private javax.swing.JScrollPane jScrollPane1; 305 private javax.swing.JTextField jTextFieldFiltering; 306 // End of variables declaration//GEN-END:variables 307 308 309}