Child:
[r24]
(diff)
Download this file
pluginDeletePerson.old
129 lines (110 with data), 3.8 kB
/*
* SPDXVersion: SPDX-1.1
*
* Creator: Person: Nuno Brito (nuno.brito@triplecheck.de)
*
* Creator: Organization: TripleCheck (contact@triplecheck.de)
*
* Created: 2013-11-10T00:00:00Z
*
* LicenseName: NOASSERTION
*
* FileName: pluginDeletePerson.java
*
* FileType: SOURCE
*
* FileCopyrightText: <text> Copyright 2013 Nuno Brito, TripleCheck </text>
*
* FileComment: <text> </text>
*/
package test;
import GUI.Actions;
import GUI.NodeType;
import GUI.TreeNodeSPDX;
import GUI.swingUtils;
import javax.swing.JEditorPane;
import script.Plugin;
import script.log;
import spdx.Person;
import spdx.SPDXfile;
import spdx.TagValue;
import studio.core;
/**
*
* @author Nuno Brito, 20th of September 2013 in Darmstadt, Germany.
* nuno.brito@triplecheck.de | http://nunobrito.eu
*/
public class pluginDeletePerson extends Plugin{
@Override
public void startup(){
log.hooks.addAction("Single-click at " + Actions.personDelete,
thisFile, "personDelete");
}
/**
* Delete the currently selected person from the list
*/
public static void personDelete(){
TreeNodeSPDX currentNode = swingUtils.getSelectedNode();
// if there is nothing selected, there is nothing to be done
if(currentNode == null){
return;
}
// only accept person-type of nodes
if(currentNode.nodeType != NodeType.person){
return;
}
Person person = (Person) currentNode.getUserObject();
// get the unique ID for the parent of this node
TreeNodeSPDX parentNode = (TreeNodeSPDX) currentNode.getParent();
String UID = parentNode.getUID();
doDeletePerson(person, UID);
}
/**
* Delete the given person from the text area, no changes are applied
* on the physical text file
* @param currentNode
*/
private static void doDeletePerson(Person person, String UID) {
// get the editor from our UI
JEditorPane textBox = core.studio.getTextBox();
//int caretPosition = textBox.getCaretPosition();
String text = textBox.getText();
text = doRemoveText(person.tagPerson, text);
text = doRemoveText(person.tagTool, text);
text = doRemoveText(person.tagOrganization, text);
// update our SPDX object with the changes
SPDXfile spdx = core.studio.getSPDX();
// get the position of this item inside the list
int index = core.components.indexOf(spdx);
// remove the item from the list
core.components.remove(spdx);
// create a new SPDX object based on new text and old file pointer
SPDXfile newSPDX = new SPDXfile(spdx.file, text);
// read the new data
spdx.read(text);
// add the new item at the same position of the old item
core.components.add(index, newSPDX);
// rebuild the whole tree again
swingUtils.populateTree(core.studio.getTree());
// get back to the parent node
swingUtils.setSelectedNode(UID);
// place back the care into position
// textBox.setText(text);
// // return text to the same position
// textBox.setCaretPosition(caretPosition);
// // bring back some focus to this text box
// textBox.requestFocusInWindow();
core.textWasModified = true;
}
/**
* A cleaner way of replacing a text snippet
* @param what
* @param where
*/
private static String doRemoveText(TagValue what, String text){
if(what == null){
return text; // nothing to be done here
}
return text.replace(what.raw, "");
}
}