How do i make a gui to cancel a process

Hello,
I am trying make a traceroute in Java. Since i didn't an API to make things easier on me. I have a class 'Traceroute' like this:
public class Traceroute {
    OSstuff OS = new OSstuff();
    Process trace;
    public Traceroute(){
    public List<ResultLine> traceroute(String host,int hops,int timeout){
        List<ResultLine> results = new LinkedList<ResultLine>();
    try {
        if (OS.isWindows()){
            Process trace = Runtime.getRuntime().exec("tracert -h " + hops + " -d -w " + timeout + " " + host);
            BufferedReader br = new BufferedReader(new InputStreamReader(trace.getInputStream()));
            String line;
            while((line = br.readLine()) != null) {    
              if(!line.startsWith("  ")) continue;
              //if(line.length() < 32) continue;
               StringTokenizer st = new StringTokenizer(line);
                if(st.countTokens() != 8 ) {
//                    ResultLine aux = new ResultLine();    //FIXME:
//                    results.add(aux);
                    return null;
               String[] tempos = new String[3];
                for(int i = 0; i < 3; i++){
                    st.nextToken();
                    tempos[i] = st.nextToken();
               st.nextToken();
               //String gate = st.nextToken();
               InetAddress gate = InetAddress.getByName(st.nextToken());
              ResultLine tmp = new ResultLine(gate,tempos);
              results.add(tmp);
        if (OS.isMac() || OS.isLinux()){
            Process trace = Runtime.getRuntime().exec(new String[]{"traceroute", "-m", "30", "-n", "-w", "2", host});
            BufferedReader br = new BufferedReader(new InputStreamReader(trace.getInputStream()));
            String line;
            while((line = br.readLine()) != null) {
              if(line.indexOf("*") != -1) continue;
              //final String ip = line.substring(4, line.indexOf(" ", 4)).trim();
              //results.add(ip);
        if (OS.OStype==OS.OTHER){
            return null;
    } catch (Exception e) {
          e.printStackTrace();
          return null;
        return results;
    public void kill(){
        trace.destroy();
}And calling the traceroute method in my GUIMain class when the "Traceroute" button is pressed, here is the event code:
    private void runButtonActionPerformed(java.awt.event.ActionEvent evt) {
        //TODO
        List<ResultLine> res;
        resultArea.setText("");
        cancelButton.setEnabled(true);
            if (targetField.getText().isEmpty())
                targetField.setText("localhost");
        res = TR.traceroute(targetField.getText(), Settings.hops, Settings.waitTime);
            if (res == null)
                resultArea.append("Error");
        StringBuilder s = new StringBuilder();
            for(ResultLine r : res){
                s.append(r.toString());
                s.append("\n");
        resultArea.setText(s.toString());
        cancelButton.setEnabled(false);   
}As it is, when the traceroute button is mpressed the program waits for the process to end and you never get to cancel the trace.
I would like help in creating a new thread (i think that this is what i need) just to run the trace process and kill the thread when either it finishes or the stop button is pressed.
PS, if some one can help me with the //FIXME on the traceroute class i would appreciate it. When ever the request exceeds the wait time the results list comes back 'null'
PS#2: I am still working on the Mac OS and Linux parts, they still need parametrization and parsing.
Edited by: Forkaster on Dec 1, 2007 11:35 AM

Oh, I didn't notice that it was another example of the most recurring question on Java GUI! Here's the idiom:
private void runButtonActionPerformed(java.awt.event.ActionEvent evt) {
  final List<ResultLine> res;
  resultArea.setText("");
  cancelButton.setEnabled(true);
  if (targetField.getText().isEmpty()){
    targetField.setText("localhost");
  Thread t = new Thread(new Runnable(){
    public void run(){
      String str = "";
      res = TR.traceroute
       (targetField.getText(), Settings.hops, Settings.waitTime);
      if (res == null){
        str = "Error";
      else{
        StringBuilder s = new StringBuilder();
        for (ResultLine r : res){
          s.append(r.toString());
          s.append("\n");
        str = s.toString();
      SwingUtilities.invokeLater(new Runnable(){
        public void run(){
          resultArea.setText(str);
          cancelButton.setEnabled(false);
  t.start();
}

Similar Messages

  • How will u make the file not to be process by other?

    how will u make the file not to be process by other? thanq

    Hi Krishna,
    File locking is not supported.
    Look at the OSS note 821267 for File Locking / Incomplete Processing.
    Regards
    San
    Remember to set the thread to solved when you have received a solution there is a Way.

  • How to make a GUI java portlet?

    how can i make a Gui java portlets with JDeveloper?

    Check out the Portal Development Kit (PDK) available at http://portalstudio.oracle.com/
    Hope this helps,
    Rob

  • We intended on purchasing CS6; not CC.  How do we make the change?

    We intended on purchasing CS6; not CC. How do we make the change?

    Cancel http://helpx.adobe.com/x-productkb/policy-pricing/return-cancel-or-change-order.html
    -or by telephone http://helpx.adobe.com/x-productkb/global/phone-support-orders.html
    Buy CS6 Creative Suite 6

  • How to make simple GUI application that use oracle 9i intermedia

    Mr Lawrence,
    i want to make a GUI application for storing and retrieving image data, can i build this application using delphi?
    i try using borland delphi 7, but delphi doesnt know object type ORDImage and ORDImageSignature. do u have any reference about building GUI application??
    I want my application can do inserting image into database, searching image by matching it's signature, make image signature for query image, displaying image, etc.
    Or if i can't make this application using delphi, maybe u can give me another application developer beside Delphi.
    Please help Mr Lawrence, i'm stuck (T_T)

    I am not too familiar with Delphi.
    If it does Object-Relational types, that could work.
    Can it interface with PL/SQL procedures? If so, that would be the way to go.
    That is what I have done with .NET applications.
    Larry

  • How to make this gui

    hello,
    well i want to make this gui using awt
    threre are three fields name,address,salary
    i want these three fields data in the textfield array
    like this
    here name,addres and salary are labels.
    and name has a textfield array
    address has a textfield array
    salary has a textfield array
    and these textfield should come as shown below
    name textfield should have indiual coloumn,same for address,and salary
    name address salary
    Textfield TextField TextField
    TextField TextField TextField
    please help in layout i have the code and no of textfields to come on screen according to lines in textfile.
    just help in layout
    should i take three panels and add them in east,centre and west.
    if this please give me the stepd to do it.
    shashank

    http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html

  • How can we make the save button active in standard toolbar in outout of alv

    Hi experts ,
    I am using factory method to print alv with oops .
    Cancel , Exit and Back button are active by default in Standard tool bar  in output of Report , But Save button is not active , How can i make that save button active .
    Also Pls tell me how i can make editable to the cell in output , 
    My Code is like this :
    cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = ispfli ).
      gr_functions = gr_table->get_functions( ).
      gr_functions->set_all( abap_true ).
      gr_display = gr_table->get_display_settings( ).
      gr_display->set_striped_pattern( cl_salv_display_settings=>true ).
      gr_display->set_list_header( 'This is the heading' ).
      gr_columns = gr_table->get_columns( ).
      gr_column ?= gr_columns->get_column( 'CITYTO' ).
      gr_column->set_long_text( 'This is long text' ).
      gr_column->set_medium_text( 'This is med text' ).
      gr_column->set_short_text( 'This is sh' ).
      gr_column ?= gr_columns->get_column( 'CITYFROM' ).
      color-col = '6'.
      color-int = '1'.
      color-inv = '0'.
      gr_column->set_color( color ).
      gr_sorts = gr_table->get_sorts( ).
    *gr_sorts->add_sort( 'CITYTO' ).
      gr_sorts->add_sort( columnname = 'CITYTO' subtotal = abap_true ).
      gr_agg = gr_table->get_aggregations( ).
      gr_agg->add_aggregation( 'DISTANCE' ).
      gr_filter = gr_table->get_filters( ).
      gr_filter->add_filter( columnname = 'CARRID' low = 'DL' ).
      gr_layout = gr_table->get_layout( ).
      gr_layout->set_key( key ).
      key-report = sy-repid.
      gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
      gr_table->display( ).
    Rgds,
    Premraj

    Hi,
    1)you need to give the function code to that save in the Function Keys of that screen from the GUI Status.
    2) while filling the field catalog of that field you need to put the        
    wa_fieldcat_edit-edit = c_x.
    i.e use the edit and append to that field catalog internal table.
    for more infomation you can refer to below links:
    problem with alv edit and save
    *Edit* and *Save*  for the selected records in ALV
    solves your problem
    Thanks!!

  • How can I make a FlashAlbumExporter background transparent?

    I really like the very cool FAE (as suggested on this most excellent forum) but the gui offers no choice as for background opacity. A little search on the net reveals a few ideas but none of them seem to work. I am using the following iframe code in iWeb:
    <iframe src=
    "http://www.bostruyephotos.com/Paso_Robles/index.html"
    style="width:1000px; height:900px;
    border-width:0px;
    border-color:#990033;
    border-style:solid;"
    scrolling="auto" >
    </iframe>
    I don't know if the bg transparency is controlled in this iframe code, in the index.html file created by FAE or in the xml file created by FAE. So far I have tried:
    Remove the background-color: #181818; from the index.html didn't make any difference.
    Adding <bgcolor transparency="0"> in the xml made simpleviewer not display at all.
    Another web site was discussing using html in the HTML snippet widget instead of iframe and it seems to address the transparency issue. But it seems rather old and is setup to use a movie instead of a photo album so I'm not sure how to convert it. Here is that code:
    <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#v ersion=6,0,40,0"
    WIDTH="700" HEIGHT="700" id="MyMovieName">
    <PARAM NAME=movie VALUE="MyFlashMovie.swf">
    <param name="wmode" value="transparent">
    <PARAM NAME=quality VALUE=high>
    <PARAM NAME=base VALUE=".">
    <EMBED src="MyFlashMovie.swf" quality=high WIDTH="700" HEIGHT="700"
    NAME="MyMovieName" ALIGN="" TYPE="application/x-shockwave-flash" wmode="transparent" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" base=".">
    </EMBED>
    </OBJECT>
    Any idea how I can make this bg transparent so my bg will show behind the photos instead of the default dark grey?
    The current version is here in case that helps:
    http://www.bostruyephotos.com/Gallery/Cruising.html
    Thanks for any help.
    Bo

    If that's what you're doing, then just turn off the visibility of the layer that you made the selection on - most likely the BG layer by clicking on the eye icon in the layer's pallet.  You change the bg layer, as I mentioned above, and after you make your selection, click on the add layer mask icon in the layer's pallet,  This will add a layer mask with your selection.  If you hold alt/opt while doing this, it will create a inverse layer mask.

  • How do I make new tabs from a first window go behind instead of in front of the first window?

    I use the same version of Firefox at work & new tabs open "behind" the initial tab, I can't figure out how to make this happen on my home computer! At home, new tabs open "in front" of the initial tab & it's really frustrating!

    Extract code into methods, so that when an action is performed a method is called. That way you can reuse the method for purposes such as resetting textfields to their default values, scores to default values, etc.
    You can go one step further and seperate the GUI layer from the processing layer, by deriving classes that for example maintain and calculate a score.
    Mel

  • How can i make save button of a pop up window inactive?

    Hi...
    When we open a document attached to an opportunity,
    a pop up opens up in new window with open,save and cancel buttons.
    The document is opened by creating a url....
    How can i make the save button inactive?
    Any helpful pointers would be rewarded...
    Thanks...

    Hi..
    This thread remains closed...

  • How do you make an array of image icons and then call them?

    How do you make an array of image icons and then call them, i have searched all over the internet for making an array of icons, but i have
    found nothing. Below is my attempt at making an array of icons, but i cant seem to make it work. Basically, i want the image to match the value of the roll of the dice (rollVal)
    Any help would be greatly appreciated, some code or link to tuturial, ect.
    /** DiceRoller.java
    * Roll, print, Gui
    import javax.swing.*;
    public class DiceRoller extends JFrame
         private ImageIcon[] image  ;
         public String[] images = { "empty", "dice1.jpg",
                   "dice2.jpg", "dice3.jpg", "dice4.jpg",
                   "dice5.jpg", "dice6.jpg" };
         public Dice die;
         private int rollVal;
         public int rollNum;
         private JLabel j1;
         public DiceRoller(){
              j1= new JLabel("");
           die =new Dice();
           int rollVal;
           rollVal = die.roll();     
           image = new  ImageIcon[images.length];
         for(int i = 0; i < images.length; i++){
          image[i] = new ImageIcon(images);
         if (image!=null){
              j1.setIcon(image[rollVal]);
         System.out.println("Roll = "+die.roll());

    Demo:
    import java.awt.*;
    import java.net.*;
    import javax.swing.*;
    public class IconExample {
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable(){
                public void run() {
                    launch();
        static void launch() {
            try {
                Icon[] icons = new Icon[6];
                for(int i=0; i<icons.length; ++i) {
                    String url = "http://www.eureka-puzzle.be/cast/images/dice" + (i + 1) + ".jpg";
                    icons[i] = new ImageIcon(new URL(url));
                display(icons);
            } catch (MalformedURLException e) {
                throw new RuntimeException(e);
        static void display(Icon[] icons) {
            JPanel cp = new JPanel();
            for(Icon icon : icons) {
                cp.add(new JLabel(icon));
            JFrame f = new JFrame();
            f.setContentPane(cp);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.pack();
            f.setLocationRelativeTo(null);
            f.setVisible(true);
    }

  • I have 6 ios devices. When we got icloud, all the information merged. How do i make everything go back to how it was before?

    I have 6 ios devices. When i got icloud, all the information merged together. How do i make it go to how i had it before.

    "Method Three
    Create a separate iTunes library for each device. Note:It is important that you make a new iTunes Library file. Do not justmake a copy of your existing iTunes Library file. If iTunes is open,quit it.
    This one may work. I searched and searched on the website for something like this, I guess I just didn't search correctly, lol. I will give this a try later. My daughter is not be back for a few weekends, therefore I will have to try the Method 3 when she comes back for the weekend again. "
    I forgot to mention that she has a PC at her house that she also syncs to. Would this cause a problem. I am already getting that pop up saying that the iPod is synced to another library (even though she is signed in with her Apple ID to iTunes) and gives the pop up to Cancel, Erase & Sync, or Transfer Purchases. My question arose because she clicked on "Erase & Sync" by mistake when she plugged the iPod to her PC the first time. When the iPod was purchased and setup, it was synced to my PC first. When she went home, she hooked it up to her PC and then she erased it by accident. I was able to restore all the missing stuff yesterday using my PC. However, even after doing that it still told me the next time I hooked it up last night that the iPod was currently synced with a different library. Hopefully, you can help me understand all this. She wants to sync her iPod and also backup her iPod at both places. Both PCs have been authorised. Thanks

  • How can I make iTunes sort on the first word by default, even though that word is "The" or "A"?

    How can I make iTunes sort on the first word by default, even though that word is "The" or "A"?
    I myself think that (for instance) "A tribe called Quest" should be sorted under "A", not "T".
    Now I can edit the sort options manually per track and/or per selection, but I would really like to just kill this "iTunes-knows-how-you-should-sort"-feature in iTunes.
    Anyone any suggestion on how to do that?
    Thanks

    Here is a modified version of one of Doug's Scripts. My modification was to add Sort Name to the list of tags that could be changed. I tried it on a single track and it worked. I recommend backing up your library first. Select the tracks you want to change (or all tracks) and run the script from the Applescript Editor.  If it works as intended, save it so you can apply it to newly imported tracks.  And, yes, I know this isn't the exact answer to your question, you want to change a preference setting in iTunes (if there is such a setting).
    Original script can be forund at http://dougscripts.com/itunes/scripts/ss.php?sp=thistagthattag
    Modified script is below. Start up Applescript Editor, paste it into a new window.  Start up iTunes and select the tracks to modify.  Click Run in the Applescript Editor.  Follow the instructions.
    (* Put This In That
    v2.0 april 22 2008
    - runs as universal binary
    - adds "Show" tag
    - consolidated code
    - saved as script bundle
    v1.7 October 3, 2006
    - adds "Album Artist" as option
    v1.6 October 28, 2004
    - works around iTunes 4.7 selection bug
    v1.5 ('04/1)-- adds "grouping" tag
    Get more free AppleScripts and info on writing your own
    at Doug's AppleScripts for iTunes
    http://dougscripts.com/itunes/
    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.
    Get a copy of the GNU General Public License by writing to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
    or visit http://www.gnu.org/copyleft/gpl.html
    -- CONSTANTS
    property allOptions : {"Song Name", "Artist", "Album", "Album Artist", "Composer", "Genre", "Comments", "Show", "Grouping", "Sort Name"}
    property my_title : "Put This In That"
    global thisTag, thatTag, theNewTags, theOriginalTags, yn
    tell application "iTunes"
              if selection is not {} then -- if tracks are selected...
                        set sel to selection
                        set numTracks to (length of sel)
                        set s to "s"
                        if numTracks is 1 then set s to ""
                        display dialog "The data from one tag REPLACES the data in another tag in all the selected tracks, with option to delete data in first tag." & return & return & (numTracks & " track" & s & " selected.") buttons {"Cancel", "Continue"} default button 2 with title my_title giving up after 30
                        if gave up of result is true then return
                        my choose_this_tag()
                        my choose_that_tag()
                        set yn to (button returned of (display dialog "Delete data in " & thisTag & " afterwards?" buttons {"Yes", "No"} default button 2 with title my_title giving up after 45) is "Yes")
                        set oldfi to fixed indexing
                        set fixed indexing to true
                        repeat with t from 1 to numTracks
                                  tell contents of item t of sel
                                            set theOriginalTags to {get name, get artist, get album, get album artist, get composer, get genre, get comment, get show, get grouping, get sort name}
                                            set theNewTags to theOriginalTags
                                            my do_put()
                                            set {name, artist, album, album artist, composer, genre, comment, show, grouping, sort name} to theNewTags
                                  end tell
                        end repeat
                        set fixed indexing to oldfi
              else
      display dialog "No tracks have been selected." buttons {"Cancel"} default button 1 with icon 0 giving up after 30
              end if -- no selection
    end tell
    to choose_this_tag()
              tell application "iTunes"
                        set n to (choose from list allOptions with prompt ("Select a tag to get data from:") with title my_title)
                        if n is false then error number -128
                        set thisTag to (n as text)
              end tell
    end choose_this_tag
    to choose_that_tag()
              set o to {}
              repeat with t in allOptions
                        if (t as text) is not thisTag then copy t to end of o
              end repeat
              tell application "iTunes"
                        set n to choose from list o with prompt ("Use data from the " & thisTag & " tag to REPLACE data in...") with title my_title
                        if n is false then error number -128
                        set thatTag to n as text
              end tell
    end choose_that_tag
    to do_put()
              try
                        repeat with i from 1 to (length of allOptions)
                                  if thisTag is (item i of allOptions) then
                                            set thisTag_sto to (item i of theOriginalTags)
                                            exit repeat
                                  end if
                        end repeat
                        repeat with i from 1 to (length of allOptions)
                                  if thatTag is (item i of allOptions) then
                                            set (item i of theNewTags) to thisTag_sto
                                            exit repeat
                                  end if
                        end repeat
                        if yn then
                                  repeat with i from 1 to (length of allOptions)
                                            if thisTag is (item i of allOptions) then
                                                      set (item i of theNewTags) to ""
                                                      exit repeat
                                            end if
                                  end repeat
                        end if
              end try
    end do_put

  • How can I make the data persistent when using plist ?

    I have a UITableView table1. And when I touch any cell in the table a new UIViewController appears and it have two UITextField's name and description. After entering the data in both the text fields I used the save button to save them. In save method I wrote the code for the data to be stored in plist.
    -(void)save:(id)sender
    indexOfDataArray = temp;
    NSString *string1 = [[NSString alloc]init];
    NSString *string2 = [[NSString alloc]init];
    string1 = nameField.text;
    string2 = descriptionField.text;
    NSDictionary *myDict = [[NSDictionary alloc] initWithObjectsAndKeys:string2, string1, nil];
    [myArray addObject:myDict];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"VideoData.plist"];
    [myArray writeToFile:path atomically:YES];
    UIAlertView *alertMesage = [[UIAlertView alloc] initWithTitle: @"Save Alert" message:@"The data entered is saved" delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles:nil] ;
    [alertMesage show];
    [alertMesage release];
    [myArray retain];
    But the problem is every time I restart my application the data in the plist is deleted. How can I retain the data in the plist name I specified ?

    I think yes, I am specifying only one file name to store in the path. I understood my where I am wrong.
    If I added data in plist for two items(item1 and item2). And again I need to add next two items(item3 and item4) . How can I make item3 and item 4 do not replace item1 and item2 ?
    Thank You.

  • How can i make the text go vertically in numbers

    How can I make the text vertical in numbers?  I have merged the cells and cannot find an option for making it go vertical as opposed to horizontal.

    I already gave two tools to fit this kind of needs.
    tip #1 :
    --{code}
    --[SCRIPT write_vertically]
    Enregistrer le script en tant que Script : write_vertically.scpt
    déplacer le fichier ainsi créé dans le dossier
    <VolumeDeDémarrage>:Utilisateurs:<votreCompte>:Bibliothèque:Scripts:Applications :Numbers:
    Il vous faudra peut-être créer le dossier Numbers et peut-être même le dossier Applications.
    Saisir dans une cellule le mot à écrire verticalement puis le sélectionner.
    ATTENTION, il ne faut pas sélectionner la cellule mais le mot qui doit apparaitre surligné.
    Aller au menu Scripts , choisir Numbers puis choisir “write_vertically”
    Le script colle dans la cellule le mot apès avoir inséré un return entre tous les caractères.
    Pour mon usage personnel j'associe un raccourci à ce script grace à FastScripts.
    --=====
    L’aide du Finder explique:
    L’Utilitaire AppleScript permet d’activer le Menu des scripts :
    Ouvrez l’Utilitaire AppleScript situé dans le dossier Applications/AppleScript.
    Cochez la case “Afficher le menu des scripts dans la barre de menus”.
    Sous 10.6.x,
    aller dans le panneau “Général” du dialogue Préférences de l’Éditeur Applescript
    puis cocher la case “Afficher le menu des scripts dans la barre des menus”.
    --=====
    Save the script as a Script: write_vertically.scpt
    Move the newly created file into the folder:
    <startup Volume>:Users:<yourAccount>:Library:Scripts:Applications:Numbers:
    Maybe you would have to create the folder Numbers and even the folder Applications by yourself.
    In a cell, type a word to write vertically then select it.
    CAUTION, don’t select the cell but the word which must be highlighted.
    Go to the Scripts Menu, choose Numbers, then choose “write_vertically”
    The script insert in the cell the word after inserting a return between every characters.
    For my own use, I link a shortcut to the script thank to FastScripts.
    --=====
    The Finder’s Help explains:
    To make the Script menu appear:
    Open the AppleScript utility located in Applications/AppleScript.
    Select the “Show Script Menu in menu bar” checkbox.
    Under 10.6.x,
    go to the General panel of AppleScript Editor’s Preferences dialog box
    and check the “Show Script menu in menu bar” option.
    --=====
    Yvan KOENIG (VALLAURIS, France)
    2011/12/17
    2012/01/01 no longer use a local variable, use result
    --=====
    on run
    Clear the clipboard *)
      set the clipboard to ""
    Copy the selection in the clipboard *)
              my raccourci("Numbers", "c", "c")
    Loop waiting that the clipboard is really filled *)
              repeat
                        try
                                  if (the clipboard as text) is not "" then exit repeat
                        on error
                        end try
              end repeat
    Extract the clipboard's content *)
      the clipboard as text
    Insert return between every characters *)
              my recolle(every character of result, return)
    Fill the clipboard with the edited string *)
      set the clipboard to result
    Paste in the cell *)
              my raccourci("Numbers", "v", "cas")
    end run
    --=====
    on recolle(l, d)
              local oTIDs, t
              set oTIDs to AppleScript's text item delimiters
              set AppleScript's text item delimiters to d
              set t to l as text
              set AppleScript's text item delimiters to oTIDs
              return t
    end recolle
    --=====
    on activateGUIscripting()
      (* to be sure than GUI scripting will be active *)
              tell application "System Events"
                        if not (UI elements enabled) then set (UI elements enabled) to true
              end tell
    end activateGUIscripting
    --=====
    ==== Uses GUIscripting ====
    This handler may be used to 'type' text, invisible characters if the third parameter is an empty string.
    It may be used to 'type' keyboard raccourcis if the third parameter describe the required modifier keys.
    I changed its name « shortcut » to « raccourci » to get rid of a name conflict in Smile.
    on raccourci(a, t, d)
              local k
              tell application a to activate
              tell application "System Events" to tell application process a
                        set frontmost to true
                        try
                                  t * 1
                                  if d is "" then
      key code t
                                  else if d is "c" then
      key code t using {command down}
                                  else if d is "a" then
      key code t using {option down}
                                  else if d is "k" then
      key code t using {control down}
                                  else if d is "s" then
      key code t using {shift down}
                                  else if d is in {"ac", "ca"} then
      key code t using {command down, option down}
                                  else if d is in {"as", "sa"} then
      key code t using {shift down, option down}
                                  else if d is in {"sc", "cs"} then
      key code t using {command down, shift down}
                                  else if d is in {"kc", "ck"} then
      key code t using {command down, control down}
                                  else if d is in {"ks", "sk"} then
      key code t using {shift down, control down}
                                  else if (d contains "c") and (d contains "s") and d contains "k" then
      key code t using {command down, shift down, control down}
                                  else if (d contains "c") and (d contains "s") and d contains "a" then
      key code t using {command down, shift down, option down}
                                  end if
                        on error
                                  repeat with k in t
                                            if d is "" then
      keystroke (k as text)
                                            else if d is "c" then
      keystroke (k as text) using {command down}
                                            else if d is "a" then
      keystroke k using {option down}
                                            else if d is "k" then
      keystroke (k as text) using {control down}
                                            else if d is "s" then
      keystroke k using {shift down}
                                            else if d is in {"ac", "ca"} then
      keystroke (k as text) using {command down, option down}
                                            else if d is in {"as", "sa"} then
      keystroke (k as text) using {shift down, option down}
                                            else if d is in {"sc", "cs"} then
      keystroke (k as text) using {command down, shift down}
                                            else if d is in {"kc", "ck"} then
      keystroke (k as text) using {command down, control down}
                                            else if d is in {"ks", "sk"} then
      keystroke (k as text) using {shift down, control down}
                                            else if (d contains "c") and (d contains "s") and d contains "k" then
      keystroke (k as text) using {command down, shift down, control down}
                                            else if (d contains "c") and (d contains "s") and d contains "a" then
      keystroke (k as text) using {command down, shift down, option down}
                                            end if
                                  end repeat
                        end try
              end tell
    end raccourci
    --=====
    --[/SCRIPT]
    --{code}
    tip #2 :
    --{code}
    --[SCRIPT rotate_cell_contents]
    Enregistrer le script en tant que Script : rotate_cell_contents.scpt
    déplacer le fichier ainsi créé dans le dossier
    <VolumeDeDémarrage>:Users:<votreCompte>:Library:Scripts:Applications:Numbers:
    Il vous faudra peut-être créer le dossier Numbers et peut-être même le dossier Applications.
    Sélectionner une cellule dont le texte doit être tourné de 90 degrés.
    Aller au menu Scripts , choisir Numbers puis choisir “rotate_cell_contents”
    --=====
    L’aide du Finder explique:
    L’Utilitaire AppleScript permet d’activer le Menu des scripts :
    Ouvrez l’Utilitaire AppleScript situé dans le dossier Applications/AppleScript.
    Cochez la case “Afficher le menu des scripts dans la barre de menus”.
    Sous 10.6.x,
    aller dans le panneau “Général” du dialogue Préférences de l’Éditeur Applescript
    puis cocher la case “Afficher le menu des scripts dans la barre des menus”.
    --=====
    Save the script as a Script: rotate_cell_contents.scpt
    Move the newly created file into the folder:
    <startup Volume>:Users:<yourAccount>:Library:Scripts:Applications:Numbers:
    Maybe you would have to create the folder Numbers and even the folder Applications by yourself.
    Select a cell whose contents must be rotated for 90 degrees.
    Go to the Scripts Menu, choose Numbers, then choose “rotate_cell_contents”
    --=====
    The Finder’s Help explains:
    To make the Script menu appear:
    Open the AppleScript utility located in Applications/AppleScript.
    Select the “Show Script Menu in menu bar” checkbox.
    Under 10.6.x,
    go to the General panel of AppleScript Editor’s Preferences dialog box
    and check the “Show Script menu in menu bar” option.
    --=====
    Yvan KOENIG (VALLAURIS, France)
    2011/06/23
    2011/06/26 -- No longer use an auxiliary text box. Now keep the text attributes.
    2012/01/31 -- edited for Lion
    --=====
    on run
              local dName, sName, tName, rowNum1, colNum1, rowNum2, colNum2
              local le_texte, la_largeur, la_hauteur, myNewDoc
              my activateGUIscripting()
    Extract properties of the source/target cell *)
              set {dName, sName, tName, rowNum1, colNum1, rowNum2, colNum2} to my get_SelParams()
              tell application "Numbers" to tell document dName to tell sheet sName to tell table tName
                        set selection range to range (name of column colNum1 & name of row rowNum1)
              end tell
    Cut*)
              my raccourci("Numbers", "x", "c")
    Trigger Preview *)
              tell application "System Events"
                        if "Preview" is not in (name of every application process) then launch application "Preview"
              end tell
      delay 0.2 -- required
    New document from the clipboard *)
              my raccourci("Preview", "n", "c")
    Rotate to left *)
              my raccourci("Preview", "l", "c")
    Copy *)
              my raccourci("Preview", "c", "c")
    Quit *)
              my raccourci("Preview", "q", "c")
              (system attribute "sys2") < 7
              if result then
    Click the [Don't Save] button in the warning sheet *)
                        tell application "Preview" to activate
                        tell application "System Events" to tell application process "Preview" to tell window 1
                                  name of buttons
                                  repeat 50 times
                                            delay 0.1
                                            if exists sheet 1 then exit repeat
                                  end repeat
                                  tell sheet 1 to click button 2
                        end tell
              end if
    Back to Numbers *)
              tell application "Numbers" to tell document dName to tell sheet sName to tell table tName
      -- just reset the focus on the table
              end tell
    Paste in the cell *)
              my raccourci("Numbers", "v", "c")
    end run
    --=====
    set { dName, sName, tName,  rowNum1, colNum1, rowNum2, colNum2} to my get_SelParams()
    tell application "Numbers" to tell document dName to tell sheet sName to tell table tName
    on get_SelParams()
              local d_name, s_name, t_name, row_num1, col_num1, row_num2, col_num2
              tell application "Numbers" to tell document 1
                        set d_name to its name
                        set s_name to ""
                        repeat with i from 1 to the count of sheets
                                  tell sheet i to set maybe to the count of (tables whose selection range is not missing value)
                                  if maybe is not 0 then
                                            set s_name to name of sheet i
                                            exit repeat
                                  end if -- maybe is not 0
                        end repeat
                        if s_name is "" then
                                  if my parleAnglais() then
                                            error "No sheet has a selected table embedding at least one selected cell !"
                                  else
                                            error "Aucune feuille ne contient une table ayant au moins une cellule sélectionnée !"
                                  end if

Maybe you are looking for