| /* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */ |
| |
| /* |
| Part of the Processing project - http://processing.org |
| |
| Copyright (c) 2008 Ben Fry and Casey Reas |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 2 of the License, or |
| (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program; if not, write to the Free Software Foundation, |
| Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| package com.transformers.supermangletron; |
| |
| |
| import java.text.SimpleDateFormat; |
| import java.util.Date; |
| |
| import javax.swing.JOptionPane; |
| |
| import processing.app.Editor; |
| import processing.app.tools.Tool; |
| |
| |
| /** |
| * Example Tools menu entry. |
| */ |
| public class Mangler implements Tool { |
| Editor editor; |
| |
| |
| public void init(Editor editor) { |
| this.editor = editor; |
| } |
| |
| |
| public String getMenuTitle() { |
| return "Mangle Selection"; |
| } |
| |
| |
| public void run() { |
| String sketchName = editor.getSketch().getName(); |
| |
| Object[] options = { "Yes, please", "No, thanks" }; |
| int result = JOptionPane.showOptionDialog(editor, |
| "Is " + sketchName + |
| " ready for destruction?", |
| "Super Mangle Tron", |
| JOptionPane.YES_NO_OPTION, |
| JOptionPane.QUESTION_MESSAGE, |
| null, |
| options, |
| options[1]); |
| if (result == JOptionPane.YES_OPTION) { |
| mangleSelection(); |
| } |
| } |
| |
| |
| protected void mangleSelection() { |
| if (editor.isSelectionActive()) { |
| String selection = editor.getSelectedText(); |
| char[] stuff = selection.toCharArray(); |
| // Randomly swap a bunch of characters in the text |
| for (int i = 0; i < stuff.length / 10; i++) { |
| int a = (int) (Math.random() * stuff.length); |
| int b = (int) (Math.random() * stuff.length); |
| if (stuff[a] == '\n' || stuff[b] == '\n') { |
| continue; // skip newline characters |
| } |
| stuff[a] = selection.charAt(b); |
| stuff[b] = selection.charAt(a); |
| } |
| editor.startCompoundEdit(); |
| editor.setSelectedText(new String(stuff)); |
| editor.stopCompoundEdit(); |
| editor.statusNotice("Now that feels better, doesn't it?"); |
| |
| } else { |
| editor.statusError("No selection, no dice."); |
| } |
| } |
| } |