Open a File from a Table Column Button Click

The Table Viewer is created and displayed in a Dialog Class.  The columns and button creation is in a TableViewer class.  

I have added a column in my  table that is populated with buttons
Table with Buttons in Column

I want the corresponding file open when the user clicks the button in the same row.

Column / Button Code

case 6:
                   Map<Object, Button> buttons = new HashMap<Object, Button>();   
                   TableItem item = (TableItem) cell.getItem();
                   Button button;
                  
                   if(buttons.containsKey(cell.getElement())) {
                      button = buttons.get(cell.getElement());
                   }
                   else
                   {
                     button = new Button((Composite) cell.getViewerRow().getControl(),SWT.PUSH);
                     //button.setText("Adobe");
                     button.setImage(loadImage("/images/AdobeIcon.png"));
                     
                     buttons.put(cell.getElement(), button);
                   }
                   TableEditor editor = new TableEditor(item.getParent());
                   editor.grabHorizontal  = true;
                   editor.grabVertical = true;
                   editor.setEditor(button , item, cell.getColumnIndex());
                   button.addListener(SWT.Selection, new SelectionListener(item, button, cell.getElement()));
                   editor.layout();
                  }

Open in new window



Selection Listener Class Code

class SelectionListener implements Listener {
      TableItem item;
      Button editButton;
      Object element;
     

      //////////////////////////////////////////////////////////////////////////
      //                         Constructor                                  //
      //////////////////////////////////////////////////////////////////////////
      public SelectionListener(TableItem item, Button editButton, Object element) {
          this.item = item;
          this.editButton = editButton;
          this.element = element;
       }

      //////////////////////////////////////////////////////////////////////////
      //                         handleEvent                                  //
      //////////////////////////////////////////////////////////////////////////
      @Override
      public void handleEvent(Event event) {
         AplotSaveDataModel.SaveData selected = (( AplotSaveDataModel.SaveData)element);
         int index = AplotSaveDataModel.getInstance().getIndexOf(selected);
         final File viewerFile = new File(AplotSaveDataModel.getInstance().getSelectedPDFFileName(index));
         try {
            Desktop.getDesktop().open(viewerFile);
         }
         catch (IOException e) {
           e.printStackTrace();
        }
      }

Open in new window



   
AplotSaveDataModel.SaveData selected = (( AplotSaveDataModel.SaveData)element);

Open in new window

This value does change when a differnt row is clicked

   
int index = AplotSaveDataModel.getInstance().getIndexOf(selected);

Open in new window

Allways Returns 0

This is the getIndexOf method in AplotSaveDataModel
 
     
public int getIndexOf(SaveData selected) {
       return data.indexOf(selected); //data is a arraylist
     }

Open in new window


I think that the above method may be the issue.  

What is happening - It does not matter which button is clicked.  The file in row 0 is always opened, because the index it always return 0

I am wondering if data.indexOf(selected) returns 0 is element is found and -1 if not.

I would be glad to change the code above, if there is a easier way to preform what is needed.  I just want when the button is clicked the file opens that is in the same row has the button.

Thanks in advance for any help you can give me.
jkteaterAsked:
Who is Participating?
 
CEHJConnect With a Mentor Commented:
I don't know which parts of the app are SWT, but the correct way to do what you want in Swing is to return a JButton as the CellEditor for the cell in question. You can build in an Action that will open the file
0
 
CEHJCommented:
:)
0
 
jkteaterAuthor Commented:
CEHJ,  I always appreciate your time and suggestions.  You have been a huge help to me and I hope you will continue to be as I continue to learn. :)
0
 
CEHJCommented:
and I hope you will continue to be as I continue to learn. :)
Most likely ;)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.