package processes include ProcessesForm.feather include ProcessesBehaviour.feather include ProcessesData.feather class Processes : SimpleComponent() { class val PID = "PID" // The Context.value is a String containing the PID. // ==== Register ==== override meth register() { registerRunnerPrefix( "ps", "Processes", ::processesPrefixAction ) addFeatures( Context.NONE ).apply { val openProcesses = Action( "Processes", ::openProcesses ) menus( MenuFeature( "Tools", openProcesses ) ) } addFeatures( PID ).apply { val kill = contextAction( "Kill", ::killAction ) val forceKill = contextAction( "Force Kill", ::forceKillAction ) contextMenu( kill, forceKill ) } } // ==== Actions ==== func killAction( context : Context ) { $( kill ${context.value} ).run() } func forceKillAction( context : Context ) { $( kill -9 ${context.value} ).run() } func processesPrefixAction( remainder : String ) : bool { if (remainder == "") { openProcesses() return true } else if (remainder.startsWith( " " ) ) { ProcessesForm().apply { selectByCommand.value = remainder.trim() }.openBehaviour() return true } return false } // ==== API ==== func openProcesses() { ProcessesForm().openBehaviour() } }