protected void buttonPressed(int buttonId) { if (buttonId == IDialogConstants.OK_ID) { StructuredSelection sel = (StructuredSelection) listViewer.getSelection(); Object[] objs = sel.toArray(); selectedSkills = new int[objs.length]; for (int i = 0; i < objs.length; i++) { selectedSkills[i] = ((SkillConfig) objs[i]).id; } } super.buttonPressed(buttonId); }
public void toggleExpandState(int state, StructuredSelection selection) { TreeItem[] items = fExtensionTree.getTree().getSelection(); if (state == NEEDS_EXPAND) { // expand sub tree traverseChildrenAndSetExpanded(items); // load non-expanded children fExtensionTree.refresh(); expandChildrenElements(selection.toArray(), true); fExtensionTree.setSelection(selection, false); } else { // collapse sub tree for (Iterator<?> iterator = selection.iterator(); iterator.hasNext(); ) { fExtensionTree.setExpandedState(iterator.next(), false); } } }
private void onMove(StructuredSelection selection, ToolBarItem destination, int location) { /* Determine Moved Items */ List<ToolBarItem> movedItems = new ArrayList<ToolBarItem>(); Object[] selectedElements = selection.toArray(); for (Object element : selectedElements) { movedItems.add((ToolBarItem) element); } /* Determine Visible Items */ List<ToolBarItem> visibleItems = new ArrayList<ToolBarItem>(); TableItem[] items = fItemViewer.getTable().getItems(); for (TableItem item : items) { visibleItems.add((ToolBarItem) item.getData()); } /* Return in these unlikely cases */ if (movedItems.isEmpty() || visibleItems.isEmpty()) return; /* Remove all Moved Items from Visible */ visibleItems.removeAll(movedItems); /* Put Moved Items to Destination Index if possible */ int destinationIndex = visibleItems.indexOf(destination); if (destinationIndex >= 0) { /* Adjust Destination */ if (location == ViewerDropAdapter.LOCATION_ON || location == ViewerDropAdapter.LOCATION_AFTER) destinationIndex++; /* Add to Visible */ visibleItems.addAll(destinationIndex, movedItems); /* Save Visible */ int[] newToolBarItems = new int[visibleItems.size()]; for (int i = 0; i < visibleItems.size(); i++) newToolBarItems[i] = visibleItems.get(i).item.ordinal(); fPreferences.putIntegers(DefaultPreferences.TOOLBAR_ITEMS, newToolBarItems); /* Show Updates */ fItemViewer.refresh(); /* Restore Selection */ fItemViewer .getTable() .setSelection(destinationIndex, destinationIndex + movedItems.size() - 1); /* Update Buttons */ updateButtonEnablement(); } }
public void run(IAction action) { IWorkbenchPartSite site = _part.getSite(); ISelectionProvider provider = site.getSelectionProvider(); StructuredSelection selection = (StructuredSelection) provider.getSelection(); Object[] items = selection.toArray(); RepositoryAnalyzer ra = RepositoryAnalyzer.getInstance(); if (items.length != 1) { logger.error("ERROR: This should be run only on one item"); } if (items[0] instanceof IJavaProject) { try { RepositoryAnalyzer.resetMIIdGen(); IJavaProject project = (IJavaProject) items[0]; String codesamples_dir_local = codesamples_dir + project.getElementName().toString(); ra.setLibProject(project); ParseSrcFiles psf = new ParseSrcFiles(); psf.parseSources(project); loadPackageInfoToMemory(project); /*Debugging section for getting list of classes*/ try { BufferedWriter bw = new BufferedWriter(new FileWriter("APIList.txt")); for (Iterator iter = ra.getLibClassMap().values().iterator(); iter.hasNext(); ) { LibClassHolder lcc = (LibClassHolder) iter.next(); bw.write(lcc.getName() + "#"); for (LibMethodHolder lmh : lcc.getMethods()) { bw.write(lmh.toString() + "#"); } bw.write("\n"); } bw.close(); } catch (Exception ex) { ex.printStackTrace(); } /*End of Debug Section*/ // Analysing code samples collected from Google code search engine RepositoryCreator rcObj = new RepositoryCreator(); rcObj.createLocalRepos(codesamples_dir_local); logger.debug("Finished downloading files..."); ra.analyzeRepository(codesamples_dir_local); // Debugging output of all collected sequences from the samples logger.info("Outputting all gathered sequenes..."); List<String> seqList = ra.getMethodIDSequences(); BufferedWriter bw = new BufferedWriter(new FileWriter("MethodSequences.txt")); int counter = 0; for (String sequence : seqList) { counter++; bw.write("Sequence " + counter + "\n"); String elementArr[] = sequence.split(" "); for (String elem : elementArr) { LibMethodHolder lmh = ra.getIdToLibMethod().get(Integer.parseInt(elem)); bw.write( "\t " + /*lmh.getDescriptor() + " : " +*/ lmh.getContainingClass().getName() + " : " + lmh + "\n"); } } bw.close(); // End of debugging output // MAFIA: Writing files for mining (mcseq.txt and mcseq.spec) /*List<String> seqIDList = ra.getMethodIDSequences(); BufferedWriter bwBideMcSeq = new BufferedWriter(new FileWriter("mcseq.txt")); int seqCounter = 0, maxLen = 0, totalSeqLength = 0; for(String IDSequence : seqIDList) { bwBideMcSeq.write(IDSequence + " \n"); seqCounter++; if(IDSequence.length() > maxLen) maxLen = IDSequence.length(); totalSeqLength += IDSequence.length(); } bwBideMcSeq.write(" \n"); bwBideMcSeq.close(); //End of Mafia output //Executing Mafia tool try { Runtime javaRuntime = Runtime.getRuntime(); String command = "mafia.exe -mfi .008 -ascii mcseq.txt frequent.dat "; @SuppressWarnings("unused") Process bideProcess = javaRuntime.exec(command); Thread.sleep(60 * 1000); //TODO: To replace with WAIT later //bideProcess.waitFor(); //NOTE: This method hangs if the process initiated process any console output and it is not consumed } catch(Exception ex) { logger.error("Error in executing MAFIA!!!" + ex); } //Reading the BIDE output: Each frequent sequence must include only APIs categorized //as hotspots HashSet<Integer> hotspotSet = new HashSet<Integer>(); BufferedWriter bw_freqSeq = new BufferedWriter(new FileWriter("FrequentSeq.txt")); Scanner bide_out = new Scanner(new File("frequent.dat")); HashSet<CodeExampleStore> codeExampleStore = RepositoryAnalyzer.getInstance().getCodeExampleSet(); int fcounter = 0; while(bide_out.hasNextLine()) { fcounter++; String freqSeq = bide_out.nextLine(); String[] freqSeqList = (freqSeq.substring(0,freqSeq.indexOf("("))).split(" "); bw_freqSeq.write("Frequent Usage Scenario: " + fcounter + "\n"); HashSet<Integer> currentSeqSet = new HashSet<Integer>(); String scenarioType = "InvokesUS"; for(String miId : freqSeqList) { Integer intObj = new Integer(miId); hotspotSet.add(intObj); currentSeqSet.add(intObj); LibMethodHolder lmh = ra.getIdToLibMethod().get(intObj); bw_freqSeq.write("\t " + lmh.getContainingClass().getName() + " : " + lmh + "\n"); if(lmh.getName().indexOf("ExtendsClass") != -1) { scenarioType = "ExtendsUS"; } if(lmh.getName().indexOf("ImplementsInterface") != -1) { scenarioType = "ImplementsUS"; } //if((lmh.getMethodType() & LibMethodHolder.TEMPLATE) == 0 && (lmh.getMethodType() & LibMethodHolder.HOOK) != 0) //{ // logger.warn("Warning: Hook method appeared in main sequence " + lmh); //} //Get the corresponding hook hotspots //HashSet<LibMethodHolder> methodsInvoked = lmh.getInvokedMethods(); //for(LibMethodHolder invokedLMH : methodsInvoked) //{ // if((invokedLMH.getMethodType() & LibMethodHolder.TEMPLATE) == 0 && (invokedLMH.getMethodType() & LibMethodHolder.HOOK) != 0) // { // bw_freqSeq.write("\t\tStrict Hook: " + invokedLMH.getContainingClass().getName() + " : " + invokedLMH + "\n"); // } else if ((invokedLMH.getMethodType() & LibMethodHolder.HOOK) != 0) // { // bw_freqSeq.write("\t\tOptional Hook: " + invokedLMH.getContainingClass().getName() + " : " + invokedLMH + "\n"); // } //} } bw_freqSeq.write("Scenario Type : " + scenarioType); //Identify the equivalent example for(CodeExampleStore cesObj : codeExampleStore) { if(cesObj.methodIds.containsAll(currentSeqSet)) { bw_freqSeq.write(" FileName : " + cesObj.filename + " MethodName : " + cesObj.methodname + "\n"); break; } } } bide_out.close(); bw_freqSeq.close(); logger.info("Number of Final Hotspots: " + hotspotSet.size()); logger.info("Hotspot IDs: " + hotspotSet); */ // Freeing the memory RepositoryAnalyzer.clearInstance(); } catch (Throwable th) { th.printStackTrace(); } } else { logger.error("ERROR: This should be run only on a Java project"); } }
/** * 取得选中的对象。 * * @return 选中的对象 */ public Object[] getSelectedObjects() { int tabIndex = dataTypeTabFolder.getSelectionIndex(); StructuredSelection sel = (StructuredSelection) dataTreeViewers[tabIndex].getSelection(); return sel.toArray(); }