/// <summary> /// パレットツールを実行します /// </summary> /// <param name="id">実行するパレットツールのID</param> /// <param name="track">編集対象のトラック番号</param> /// <param name="vsq_event_intrenal_ids">編集対象のInternalIDのリスト</param> /// <param name="button">パレットツールが押し下げられた時のマウスボタンの種類</param> /// <returns>パレットツールによって編集が加えられた場合true。そうでなければfalse(パレットツールがエラーを起こした場合も含む)。</returns> public static boolean invokePaletteTool( String id, int track, int[] vsq_event_intrenal_ids, MouseButtons button ) { if ( loadedTools.containsKey( id ) ) { VsqFileEx vsq = AppManager.getVsqFile(); VsqTrack item = (VsqTrack)vsq.Track.get( track ).clone(); Object objPal = loadedTools.get( id ); if ( objPal == null ) { return false; } if ( !(objPal is IPaletteTool) ) { return false; } IPaletteTool pal = (IPaletteTool)objPal; boolean edited = false; try { edited = pal.edit( item, vsq_event_intrenal_ids, button ); } catch ( Exception ex ) { AppManager.showMessageBox( PortUtil.formatMessage( _( "Palette tool '{0}' reported an error.\nPlease copy the exception text and report it to developper." ), id ), "Error", cadencii.windows.forms.Utility.MSGBOX_DEFAULT_OPTION, cadencii.windows.forms.Utility.MSGBOX_ERROR_MESSAGE ); serr.println( typeof( PaletteToolServer ) + ".invokePaletteTool; ex=" + ex ); edited = false; } if ( edited ) { CadenciiCommand run = VsqFileEx.generateCommandTrackReplace( track, item, vsq.AttachedCurves.get( track - 1 ) ); AppManager.editHistory.register( vsq.executeCommand( run ) ); } return edited; } else { return false; } }