Drop-down Menu Input Dialog


import groovy.swing.SwingBuilder
import java.awt.FlowLayout
import com.im.df.api.support.SelectionDescription

def updateRow = { rs, field, value ->
  //variable initiation
  def rootVS = rs.rootVertexState
  def rowSelected = null
  def ety = field.getEntity()
  def edp = ety.schema.dataProvider.getEntityDataProvider(ety)
  // Find id of the row to update -- ie. selected row
  SelectionDescription sel = rootVS.getSelection()
  if (sel.isSingleRow()) {
    rowSelected = sel.getMaxSelectionIndex()
  } else {
    println "More than one row is selected. The rows have NOT been updated."
    return
  }
  def id = rootVS.ids[rowSelected]
  //create lock
  edp.lockable.withLock('Updating') { envRW ->
    // Assign value to field
    def vals = [:]
    vals[field.id] = value
    // Create the DFUpdateDescription and update the DFEntityDataProvider
    def ud = DFUpdateDescription.create(ety, id, vals)
    def submitList = Collections.singletonList(ud)
    edp.update(submitList, DFUndoConfig.OFF, envRW)
  }
}

onDoubleClick = { event ->
  def swing = new SwingBuilder()
  def gui = swing.frame(title:'DropDown', size:[200,120], locationRelativeTo: null) {
    //Create dialog and center position
    panel(layout:new FlowLayout()) {
      panel(layout:new FlowLayout()) {
        comboBox(id:'clinicalTrial', items:["Phase 1", "Phase 2", "Phase 3", "Phase 4"], selectedIndex:2)
      }
      panel(layout:new FlowLayout()) {
        button('OK',preferredSize:[80,24], actionPerformed:{
          //An action performed - fetching variables
          def field = event.widget.boundFields[0]
          def rs = event.widget.form.resultSet
          def value = swing.variables.clinicalTrial.selectedItem
          //and use it as parameters for updateRow method
          updateRow(rs, field, value)
          println swing.variables.clinicalTrial.selectedItem
          // Close dialog
          dispose()
        })
        button('Cancel',preferredSize:[80,24], actionPerformed:{
          dispose()
        })
      }
    }
  }
  gui.show()
}

Versions: This script has been tested on IJC version 6.0.



Copyright © 1999-2013 ChemAxon Ltd.    All rights reserved.