Hi Sharon, I cannot reproduce your problem.
I ran your code. The textfield had the focus and I was able to enter text everytime. Which version of ULC and JRE are you using? How have you deployed yor application? BTW: 1. "text.setVisible(true);" is not necessary as the textfield will become visible, by virtue of being contained in the dialog, when the dialog is uploaded and becomes visible . 2. Although the method name is "showModalDialog", the dialog you are creating is not modal. Can you please send me a small snippet that demonstrates the problem? Thanks and regards, Janak >-----Original Message----- >From: [EMAIL PROTECTED] >[mailto:[EMAIL PROTECTED] Behalf Of Sharon O'Connor >Sent: Wednesday, October 04, 2006 11:00 PM >To: [EMAIL PROTECTED] Com >Subject: Problem with text field in dialog pop-up : followup to >:RE:[ULC-developer] Setting location of a dialog > > >Janak, >Thank you for your answer, it was very helpful and I am now able to >position the dialog where I want it. >I have a different problem now though with the dialog text field. >About 1/8 of the time when the dialog pops-up the text fields does not >have focus (the cursor is not in the text field) and most frustratingly >I can not enter any text into the text field. I must close the dialog >and re-open it, sometimes 3 or 4 times before I can enter text in the >field. >Following is the dialog code: > >private void showModalDialog(ULCTable table, String col, Point location) >{ > ULCFrame parent = new ULCFrame(); > final ULCDialog dialog = new ULCDialog(parent, "Search " + col); > ULCBoxPane dialogPane = new ULCBoxPane(1, 2); > final ULCTextField text = new ULCTextField(25); > text.setText(col); > text.select(0,col.length()); > text.setBackground(Color.lightGray); > text.requestFocus(); > dialogPane.add(ULCBoxPane.BOX_LEFT_CENTER, text); > ULCButton closeButton = new ULCButton("Search"); > closeButton.addActionListener(new IActionListener() { > public void actionPerformed(ActionEvent actionEvent) { > dialog.setVisible(false); > searchTableData(searchColumn, text.getValue()); > } > }); > dialogPane.add(ULCBoxPane.BOX_RIGHT_BOTTOM, closeButton); > dialog.add(dialogPane); > dialog.setDefaultButton(closeButton); > dialog.setSize(250, 150); > dialog.setResizable(false); > dialog.setLocation(location); > dialog.setVisible(true); > text.setVisible(true); > } > > >On Tue, 2006-10-03 at 20:36 +0530, Janak Mulani wrote: >> Hi Sharon, >> >> Please see the snippet at the end of this mail. It has a custom >table header >> which listens to mouse events on the underlying JTableHeader. >> >> I am just using a method invocation from client to server instead of >> generating an event. You can modify if you wish to generate an event. >> >> >in the event. When I add the event source as an arg I get an error on >> >the client side: >> >'No coder registered for class >> >com.ulcjava.base.client.UITableHeader.BasicTableHeader' >> >> Event source is the UITablehHeader.BasicTableHeader - a client side proxy >> object. ULC framework does not know how to serialises this class >to be able >> to send it to the server. Moreover, it does not make sense to send this >> class to the server because client side classes (UI*) are not >available on >> the server. >> >> I hope this helps. >> >> Thanks and regards, >> >> Janak >> >> >-----Original Message----- >> >From: [EMAIL PROTECTED] >> >[mailto:[EMAIL PROTECTED] Behalf Of Sharon O'Connor >> >Sent: Monday, October 02, 2006 9:28 PM >> >To: [email protected] >> >Subject: [ULC-developer] Setting location of a dialog >> > >> > >> >Hi, >> > >> >I am trying to set the location of a dialog box so that it will appear >> >as close as possible to a table column that was clicked. The purpose is >> >that the columns are searchable so I would like the dialog in which the >> >user is going to enter the text they are searching for to 'pop-up' next >> >to the column they are searching on. >> > >> >My applet that is contained within a frame in my webapp. I am able to >> >create an event and send the point that is clicked to the server-side >> >but the point is relative to the table. I have yet to figure out how to >> >set the location of the dialog using this point. I have also tried >> >setLocationRelativeTo(ULCTable) but this does not set it close to the >> >header or the column. >> > >> >I have overridden UITableHeader in order to fire off the event but I >> >have been unsuccessful in setting the actual header as one of the args >> >in the event. When I add the event source as an arg I get an error on >> >the client side: >> >'No coder registered for class >> >com.ulcjava.base.client.UITableHeader.BasicTableHeader' >> > >> >If I do not try to send the actual event source from the client to the >> >server it all works fine, except that I can not set the location of the >> >dialog where I want it. >> > >> > >> >Following is the event code in my UITableHeader: >> > >> > public void mousePressed(MouseEvent event) { >> > JTableHeader header = (JTableHeader)getBasicComponent(); >> > int colIndex = header.columnAtPoint(event.getPoint()); >> > TableColumnModel model = header.getColumnModel(); >> > TableColumn col = model.getColumn(colIndex); >> > >> > Object[] args = new Object[4]; >> > args[0] = event.getPoint(); >> > args[1] = event.getSource().toString(); >> > args[2] = col.getModelIndex(); >> > args[3] = event.getSource(); //This causes an error on the >> >client side >> > fireMandatoryEventULC("foo", "foo", args); >> > >> > >> >Following is the code in my dispatcher: >> > >> > protected class ComboSortedTableHeaderDispatcher extends >> >ULCTableHeaderDispatcher{ >> > public EventObject createFooEvent >> >(com.ulcjava.base.application.util.Point p, String source, int col, >> >UITableHeader.BasicTableHeader header){ >> > >> > ComboSortedHeaderEvent event = new ComboSortedHeaderEvent >> >(source, "foo"); >> > event.setPoint(p); >> > event.setColumn(getTable().getColumnModel().getColumn(col)); >> > event.setTable(getTable()); >> > return event; >> > } >> > >> >Thank you for any suggestions in advance. >> > >> >-- >> >Sharon O'Connor >> >Software Engineer >> >Meridias Capital >> > >> >Tel: 866-369-7755 ext. 4096 >> >> ---------------- >> >> >> import java.awt.event.MouseEvent; >> import java.awt.event.MouseListener; >> >> import javax.swing.table.JTableHeader; >> import javax.swing.table.TableColumn; >> import javax.swing.table.TableColumnModel; >> >> import com.ulcjava.base.application.AbstractApplication; >> import com.ulcjava.base.application.ULCBoxPane; >> import com.ulcjava.base.application.ULCDialog; >> import com.ulcjava.base.application.ULCFrame; >> import com.ulcjava.base.application.ULCScrollPane; >> import com.ulcjava.base.application.ULCTable; >> import com.ulcjava.base.application.table.DefaultTableModel; >> import com.ulcjava.base.application.table.ULCTableHeader; >> import com.ulcjava.base.application.util.Dimension; >> import com.ulcjava.base.application.util.Point; >> import com.ulcjava.base.client.UITableHeader; >> import com.ulcjava.base.development.DevelopmentRunner; >> >> public class DialogLocationInTableSnippet extends AbstractApplication { >> public void start() { >> final ULCTable table = new ULCTable(new >SnippetTableModel(10, 3)); >> table.setTableHeader(new ULCMyTableHeader(table)); >> >> ULCBoxPane content = new ULCBoxPane(true); >> ULCScrollPane scp = new ULCScrollPane(table); >> content.add(ULCBoxPane.BOX_EXPAND_EXPAND, scp); >> ULCFrame frame = new ULCFrame("ULCTableColDragSnippet"); >> frame.setDefaultCloseOperation(ULCFrame.TERMINATE_ON_CLOSE); >> frame.add(content); >> frame.setSize(300, 300); >> frame.setVisible(true); >> >> } >> >> public static void main(String[] args) { >> DevelopmentRunner >> >.setApplicationClass(DialogLocationInTableSnippet.class); >> DevelopmentRunner.run(); >> } >> >> private static class SnippetTableModel extends DefaultTableModel { >> public SnippetTableModel(int rowCount, int columnCount) { >> super(createRows(rowCount, columnCount), >> createColumnNames(columnCount)); >> } >> >> private static Object[][] createRows(int rowCount, >int columnCount) { >> Object[][] result = new Object[rowCount][]; >> for (int i = 0; i < rowCount; i++) { >> result[i] = new Object[columnCount]; >> for (int j = 0; j < columnCount; j++) { >> result[i][j] = i + ":" + j >+ " AAAa"; >> } >> } >> >> return result; >> } >> >> private static String[] createColumnNames(int columnCount) { >> String[] result = new String[columnCount]; >> for (int i = 0; i < columnCount; i++) { >> result[i] = Integer.toString(i); >> } >> >> return result; >> } >> } >> >> public static class ULCMyTableHeader extends ULCTableHeader { >> private ULCTable myTable; >> >> protected String typeString() { >> return UIMyTableHeader.class.getName(); >> } >> >> public ULCMyTableHeader(ULCTable table) { >> super(table); >> myTable = table; >> } >> >> public void displaySearchDialog(Point location, >Integer colIndex) { >> ULCDialog d = new ULCDialog(null, "Search column " >> + >myTable.getColumnName(colIndex.intValue())); >> d.setSize(new Dimension(200, 70)); >> d.setLocation(location); >> d.setVisible(true); >> } >> >> protected class ULCMyTableHeaderDispatcher extends >> ULCTableHeader.ULCTableHeaderDispatcher { >> public void displaySearchDialog(Point >location, Integer colIndex) { >> >ULCMyTableHeaderDispatcher.this.displaySearchDialog(location, >> colIndex); >> } >> } >> } >> >> public static class UIMyTableHeader extends UITableHeader implements >> MouseListener { >> >> protected void postInitializeState() { >> super.postInitializeState(); >> getBasicTableHeader().addMouseListener(this); >> } >> >> public void mouseClicked(MouseEvent e) { >> } >> >> public void mouseEntered(MouseEvent e) { >> } >> >> public void mouseExited(MouseEvent e) { >> } >> >> public void mousePressed(MouseEvent event) { >> java.awt.Point tableLocation = >getBasicTableHeader().getTable() >> .getLocationOnScreen(); >> java.awt.Point relativeColumnLocation = >event.getPoint(); >> java.awt.Point dialogLocation = new >java.awt.Point(tableLocation.x >> + relativeColumnLocation.x, >tableLocation.y >> + relativeColumnLocation.y); >> JTableHeader header = (JTableHeader) >getBasicComponent(); >> int colIndex = >header.columnAtPoint(event.getPoint()); >> TableColumnModel model = header.getColumnModel(); >> TableColumn col = model.getColumn(colIndex); >> Object[] args = new Object[2]; >> args[0] = dialogLocation; >> args[1] = new Integer(col.getModelIndex()); >> invokeULC("displaySearchDialog", args); >> } >> >> public void mouseReleased(MouseEvent e) { >> } >> } >> >> } >> >-- >Sharon O'Connor >Software Engineer >Meridias Capital > >Tel: 866-369-7755 ext. 4096 >_______________________________________________ >ULC-developer mailing list >[email protected] >http://lists.canoo.com/mailman/listinfo/ulc-developer _______________________________________________ ULC-developer mailing list [email protected] http://lists.canoo.com/mailman/listinfo/ulc-developer
