How refresh JProgressBar display ?

I use a JProgressBar in my program but the display of it is never refresh even if I use updateUI method.
Do you know a way to have a real refresh of my display ?

you need to implement a model and associate it to the GUI:
take a look in the BoundedRangeModel class....
http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html
the code bellow is a large one I used in a class about Model-View-Controller paradigm.. It is big, but I hope it help you...
import javax.swing.*;
import java.util.*;
import java.awt.*;
import javax.swing.event.*;
* This test class demonstrates the control-model-view programing paradigm
* @version 1.0 beta
* @author Felipe Gaucho
* @date september 2000
public class CMV
     Model model = null;
     static public void main(String[] args)
          try
               new CMV(Integer.parseInt(args[0]));
          catch(Exception error)
               new CMV(1000); // Default test value
     CMV(int limit)
          // Creates a data model
          model = new Model(limit);
          // Set the model observers
          model.addObserver(new SwingView(model));
          model.addObserver(new AwtView());
          // Set a controller to the model
          Control controller = new Control(model);
// VIEW
class SwingView extends JFrame implements Observer
     JProgressBar progress = null;
     JSlider slider = null;
     SwingView(Model model)
          super("Swing Viewer");
          try
               //UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
               //UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
               //UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
          catch(Exception error)
          // Creates a new progress bar indicating the model status
          progress = new JProgressBar(model);
          progress.setStringPainted(true);
          // Creates a new slider providing an interactive way of model data modifying
          slider = new JSlider(model);
          slider.setVisible(false);
          // Swing layout mounting
          getContentPane().setLayout(new BorderLayout(2,2));
          getContentPane().add(new JLabel("Swing do it better!", JLabel.CENTER), BorderLayout.CENTER);
          getContentPane().add(progress, BorderLayout.SOUTH);
          getContentPane().add(slider, BorderLayout.NORTH);
          setSize(250,100);
          setLocation(50,50);
          setVisible(true);
     public void update(Observable model, Object component)
          if( ! slider.isVisible() && ((Model)model).getValue() == ((Model)model).getMaximum())
               slider.setVisible(true);
          progress.repaint();
// VIEW
class AwtView extends Frame implements Observer
     Label valueInfo = new Label("", Label.CENTER);
     AwtView()
          // Set title and layout type
          super("Awt Viewer");
          setLayout(new BorderLayout());
          // Set the layout components
          add(new Label("Awt use light weight components!", Label.CENTER), BorderLayout.CENTER);
          valueInfo.setFont(new Font("Serif",Font.BOLD+Font.ITALIC,32));
          add(valueInfo, BorderLayout.SOUTH);
          // Display it
          setSize(250,100);
          setLocation(350,50);
          setVisible(true);
     public void update(Observable model, Object component)
          valueInfo.setText(((Model)model).getValue() + " / " + ((Model)model).getMaximum());
// MODEL
class Model extends Observable implements BoundedRangeModel
     private int value = 0;
     private int minimum = 0;
     private int maximum = 0;
     Model(int maximum)
          this(0, maximum, 0);
     Model(int minimum, int maximum, int initialValue)
          this.minimum = minimum;
          this.maximum = maximum;
          this.value = initialValue;
     public void addChangeListener(ChangeListener x) {}
     public int getExtent() {return 1;}
     public int getMaximum() {return maximum;}
     public int getMinimum() {return minimum;}
     public int getValue() {return value;}
     public boolean getValueIsAdjusting (){return true;}
     public void removeChangeListener(ChangeListener x){}
     public void setExtent(int newExtent) {}
     public void setMaximum(int newMaximum) {}
     public void setMinimum(int newMinimum) {}
     public void setRangeProperties(int value, int extent, int min, int max, boolean adjusting) {}
     public void setValue(int value)
          this.value = value;
          setChanged();
          notifyObservers();  // <== Notify the observers about the model data changing
     public void setValueIsAdjusting(boolean b) {}
// CONTROL
class Control
     private Model model = null;
     Control(Model model)
          this.model = model;
          int limit = model.getMaximum();
          for(int i=0; i<limit; i++)
               model.setValue((model.getValue())+1);
}

Similar Messages

  • How to refresh table display using slis and 'reuse_alv_grid_display method.

    hello,
    how to refresh table display using slis and 'reuse_alv_grid_display method'.
    when i'm refreshing table display it performs once again reuse_alv_grid_display.and when i back the previous value appear.how to solve it?
    neon

    are you chaning any value in the gird if so use this..
    Pass the user_command form name to the Import parameter
    I_CALL_BACK_USERCOMMAND .
    and have the Dynamic form implementation..
    FORM user_command USING ucomm TYPE sy-ucomm
                selfield TYPE slis_selfield.
    "The below is important for Editable Grid.
      DATA: gd_repid LIKE sy-repid, "Exists
      ref_grid TYPE REF TO cl_gui_alv_grid.
      IF ref_grid IS INITIAL.
        CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
          IMPORTING
            e_grid = ref_grid.
      ENDIF.
      IF NOT ref_grid IS INITIAL.
        CALL METHOD ref_grid->check_changed_data .
      ENDIF.
      CASE ucomm.
        WHEN 'REFRSH'.
      ENDCASE.
           selfield-refresh = 'X'.
    ENDFORM.                    "user_command

  • HT3492 I have an Acer S239HL display monitor connected to my MacBook pro that just stopped working. Acer customer support said I needed to refresh the display adapter driver. How or where do I find this?

    How do I update or refresh the display adapter driver on my MacBook Pro? I have it connected to an Acer display monitor that just stopped working. Acer custoemr support told me I need to refresh the display driver. ANy suggestions on how I do this? Or what I need to download or update/ Thanks.

    So the display WAS WORKING connected to your Mac?
    Restart your Mac.
    Try the monitor on another computer, Mac or Windows, to see if it works at all.

  • How do I display variables in a query in Bex Analyser 7.0?

    Is this option gone in 7.0? I know I can insert navigation pane or filters, but how do I display what variables have been used to run a particular query?
    I run a query and there is no way of telling HOW I ran it... I am surely missing something here, no?
    Also, I know that SAPBExQueries sheet is gone in 7.0. I used it to override variables values and force query/workbook refresh with the new variables (as a way of automation of a report). How do I go about this in 7.0 if I don't even see the variables anywhere? What other way of forcing a workbook to refresh for, say, 10 different clients?
    Thanks,
    A.

    Jacob,
    Many thanks for your reply.
    As for Bex, you said:
    "So any query needs to start in a default workbook design where you got the filter and nav pane. Then you got a "Variables Screen" option."
    Regardless of whether I run a stand alone query, or I insert analysis grid, nav pane and filters in the design mode, my variables are not dislayed anywhere. What do you mean by "then you got a variables screen option"? Where is it? I checked toolbars, menus, properties, I couldn't find anything. I can, of course, change variables, if that's what you mean, but I still can't display them on my worksheet. So if somebody's looking  at my query they have no idea what variables I used. 
    As for broadcasting, sorry, it's not an option. By "say 10 clients" I meant "say 100 clients" times 20 different managers i.e. 200 different variants (seperate reports)  Not possible to use a broadcaster, I am afraid, as the list of  clients, managers and fiscal periods (and other variables) changes too often and we need to have the flexibility.
    By looking at the new 7.0 I fear we will need to stick to the version 3.5 for that reason. Worrying...
    Cheers,
    A.

  • How do i display input values (POV) for a table control field

    Hi guyz !
    How do i display input values (POV) for a field in table control,
    i mean when user presses F4 on a table control field.
    Please help.
    Thanks
    jahan

    PROCESS ON VALUE-REQUEST( F4 ) statement  
    Code to demonstrate how to perform a manual value help(F4) on a particular field using the PROCESS ON VALUE-REQUEST statement and how to return values back to a table control on the screen. For standard screen fields simply move the value to the appropriate screen field name.
    * Screen flow logic........
    PROCESS BEFORE OUTPUT.
    *MODULE PBO_MODULE.
    PROCESS AFTER INPUT.
    *MODULE PAI_MODULE.
    PROCESS ON VALUE-REQUEST. "F4
      FIELD EKPO-EBELP MODULE help_ekpo.
    MODULE help_ekpo INPUT.
    **Transport values to table dynpro/screen table control
      DATA: l_stepl LIKE  sy-stepl,
            l_indx  LIKE  sy-stepl.
      DATA: dynpfields        LIKE dynpread OCCURS 5 WITH HEADER LINE.
    * Adjust for scroling within table control
      CALL FUNCTION 'DYNP_GET_STEPL'
        IMPORTING
          povstepl        = l_stepl
        EXCEPTIONS
          stepl_not_found = 0
          OTHERS          = 0.
      l_indx = tc_ekpotable-top_line + l_stepl - 1.
              "tc_ekpotable should already have been declared
      REFRESH dynpfields.
      CLEAR   dynpfields.
      dynpfields-fieldname  = 'EKPO-EBELN'.
      dynpfields-fieldvalue = '00010'   "wa_ekpo-ebeln.
      dynpfields-stepl      = l_stepl.
      APPEND dynpfields.
      dynpfields-fieldname  = 'EKPO-EBELP'.
      dynpfields-fieldvalue = '00020'   "wa_ekpo-ebelp.
      dynpfields-stepl      = l_stepl.
      APPEND dynpfields.
      CALL FUNCTION 'DYNP_VALUES_UPDATE'
        EXPORTING
          dyname     = 'SAPLZZ_EKKO'    "Program name
          dynumb     = '0100'           "Screen number
        TABLES
          dynpfields = dynpfields
        EXCEPTIONS
          OTHERS     = 0.
    ENDMODULE.                 " help_ekpo  INPUT
    reward points  if it is usefull ..
    Girish

  • How can I display XSLT transformer errors on a web page ?

    Hi,
    I have some JSP pages that access DB, create an XML based on DB data and then transform it into HTML through an XSLT stylesheet. Developing the XSL code it's easy to make mistakes and generate errors on trasformation, but what I receive on the web page is only a "Could not compile stylesheet" TransformerConfigurationException, while the real cause of the error is displayed only on tomcat logs. This is the code for transformation:
    static public void applyXSLT(Document docXML, InputStream isXSL, PrintWriter pw) throws TransformerException, Exception {
            // instantiate the TransformerFactory.
            TransformerFactory tFactory = TransformerFactory.newInstance();
            // creates an error listener
            XslErrorListener xel = new XslErrorListener();
            // sets the error listener for the factory
            tFactory.setErrorListener(xel);
            // generate the transformer
            Transformer transformer = tFactory.newTransformer(new SAXSource(new InputSource(isXSL)));
            // transforms the XML Source and sends the output to the HTTP response
            transformer.transform(new DOMSource(docXML), new StreamResult(pw));
    }If an exception is thrown during the execution of this code, its error message is displayed on the web page.
    This is the listener class:
    public class XslErrorListener implements ErrorListener {
        public XslErrorListener() {
        public void warning(TransformerException ex) {
            // logs on error log
            System.err.println("\n\nWarning on XEL: " + ex.getMessage());
        public void error(TransformerException ex) throws TransformerException {
            // logs on error log
            System.err.println("\n\nError on XEL: " + ex.getMessage());
            // and throws it
            throw ex;
        public void fatalError(TransformerException ex) throws TransformerException {
            // logs on error log
            System.err.println("\n\nFatal Error on XEL: " + ex.getMessage());
            // and throws it
            throw ex;
    }When I have an error in the XSL stylesheet (for examples a missing closing tag), I can find on tomcat logs the real cause of the error:
    [Fatal Error] :59:10: The element type "table" must be terminated by the matching end-tag "</table>".
    Error on XEL: The element type "table" must be terminated by the matching end-tag "</table>".but on my web page is reported just the TransformerConfigurationException message that is:
    "Could not compile stylesheet".
    How can I display the real cause of the error directly on the web page?
    Thanks,
    Andrea

    This code is part of a bigger project that let developers edit XSL stylesheets through a file upload on the system and we can't impose the use of any tool for checking the xsl. So, I need to display the transformer error on the web page.I see. This code is part of an editorial/developmental tool for developers to create and edit XSL stylesheets.
    As part of the editorial process, XSL errors during editing can be considered a normal condition. In other words, it is normal to expect that the developers will generate XSL errors as they are developing stylesheets.
    In this light, handling the XSL transformation errors is a business requirement that you need to handle. Using the Java Exceptions mechanisms, e.g. try / catch are inappropriate to handle business requirements, in my opinion.
    I suggest that you look at how you handle the occurence of XSL errors differently than what you currently have. You need to:
    (1) capture the Transformation exception on the server;
    (2) extract the message from the exception and put it into a message that can be easily understood by the user;
    The current error message that you have going to the web browser is not useful.
    And you should not have the Transformation exception sent to the web browser either.
    What you are attempting to do with the exception is not appropriate.
    Handle the Transformation exception on the Business tier and use it to create a useful message that is then sent to the Presentation tier. In other words, do not send Java exceptions to web browser.
    />

  • How can I display True/False in my dropdownlist as "Yes" and "No"?

    Hi All,
    I want to bind a dropdownlist to a boolean value (so it's either true or false).  I'm particularly interested in using two-way binding to when the user changes from "yes" to "no" the boolean value automatically changes from "true" to "false."  But, I want the user to see "yes" and "no" as the options, rather than "true" and "false".
    How can I display "yes" and "no" and still take advantage of binding?  Or can I not use binding in this circumstance?
      -Josh

    Solution 1:
    In order to display Yes/No for True/False, you may specify labelFunction for the dropdownList.
    In MXML:
    <s:DropDownList labelFunction="myLabelFunction" />
    In actionscript:
    private var arr:ArrayCollection = new ArrayCollection(["true","false"]);
                private function mylabelFunction(item:Object):String
                    if(item.toString() == "true")
                        return "yes";
                    else return "No";
    OR
    Solution2:
    may be u can try making an array collection like
    private var arr:ArrayCollection = new ArrayCollection([{label:"yes",value:"true"},{label:"no",value:"false"}]);
    and specify labelField for the dropdownList like
    <s:DropDownList labelField="label" dataProvider="{arr}" />

  • How can I display  contacts in a relationship

    I have companies in my CRM. I have a customers/contacts in the CRM I have tied as a relationship with each companies. How can I display all the records/contacts associated with a company? I have a already created a secure zone, so the company user would have logged in. Is this possible? If not, any workaround?
    The only workaround I thought of is to use webapp to import the company data and create another web app containing the employees data. Then link both tables/webapp using datasource. But the way the client's data is structured could create a lot of problems going forward.
    Any suggestion, help will be appreciated

    The relationship feature and how companies work currently in BC is really limited. It is an association and not true relationships at the moment. You cant output a company and show all its relationships at the moment.

  • How can I display & split the audio & video from the same digitized clip?

    I digitized a scene into iMovie that I edited on a professional system which I don't have access to anymore. The whole scene is 1 clip. Now I see a few tweaks that I want to make, so I was hoping to do them in iMovie.
    I want to "pull up" the audio in one section - meaning I want to take cut about 20 frames of audio from the end of a shot, and then move all the other audio up to fill the hole. To compensate for the missing 20 frames, I'll cut video off the head of the next shot. Some call this prelapping. Some call it an L-cut. Some call it asymmetrical trimming. Either way, I can't figure out how to do it in iMovie.
    My clip appears in the timeline as one track - a single track that contains the video and 2 audio tracks. How can I display the audio that's tied to the video on its own track? Then I think I could split audio & video wherever I wanted and trim things up - but I can't figure out how to do it.
    Am I asking too much of this software?
    BTW, I never see the option to "Split audio clip at playhead". I'm not displaying clip volume or waveforms. Choosing to display waveforms doesn't show me anything. Maybe iMovie thinks I'd only want to see waveforms of audio that isn't tied to my video-and-audio clips?
    Thanks in advance for any help...

    Jordon,
    "Am I asking too much of this software?"
    No, you're not.
    You first want to select your clip(s) and choose Advanced>Extract Audio.
    This will copy the audio from the video clip and place it on one of the two separate audio tracks while lowering the audio level to zero in the original video track.
    You can now edit and move the audio independently of the video.
    With the audio clip selected, you'll find you now have access to Edit>Split Selected Audio Clip at Playhead.
    Matt

  • How can i display a list of all the names stored in the Mail app?

    When sending an email, the program shows a list of names according to the first and subsequent letters that I type into the To: field. There are times I cannot recall someone's email user name. How can I display a complete list of all the names Mail has stored? I know that I can go to the To: field then type in the letter A, then write down all listings under A, and then repeat for each letter of the alphabet, but there should be an easier method.
    I have perhaps dozens of names in Mail, but only five names in Address Book, so the latter does me no good.

    On the menubar, Mail > Window > Previous Recipients
    Regards,
    Captfred

  • Importing cd's and suddenly can't see the recently added folder, have been unable to figure out how to re-display it, know the songs are going somewhere

    Was importing cd's and suddenly can't see recently added folder, been unable to figure out how to re-display it, know the songs are going somewhere

    See Restore Original Smart Playlists.
    tt2

  • How do I display a GIF image stored in byte[ ]

    I have a bit of sticky problem and am now stuck. I will post a little code in the hopes someone more clever than I can give me a hand
    I am using a servlet to grab some data from a user, a web service (still within the servlet) is then called that generates a GIF of the user location as
    specified by the address data grabbed from the user input (GET via the url parameters). The byte data is stored in a bean as a byte [ ] and added to the request as an attribute
    via request.setAttribute().
    I then forward to a jsp page that looks like this:
         <html>
         <head>
         <title>Learn Fast or Perish</title>
         </head>
         <body>
         <center>
         <hr>
         </center>
         <h1>Hello World.</h1>
         <jsp:include page="/display" flush="true"/>
         </body>
         </html>.../display maps to another servlet. The doGet portion of the servlet looks like this:
                //response and request are the HTTPServletResponse/Request doGet parameters
                //ImageByteInformation is my bean holding image info in byte [] format
                ImageByteInformation imageByteInfo = (ImageByteInformation) request.getAttribute("imageByteInformation");
                ImageIcon imageIcon = new ImageIcon(imageByteInfo.getByteData());
                Image image = imageIcon.getImage();
                //create a BufferedImage from the image
                BufferedImage bufferedImage = new BufferedImageCreator().createBufferedImage(image);
                System.out.println("BufferedImage length: " + bufferedImage.getHeight() + "BufferedImage width: " + bufferedImage.getWidth());//400 by 600
                System.out.println("BufferedImage string: " + bufferedImage.toString());
                //prints out: BufferedImage@93afae: type = 2 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=ff000000 IntegerInterleavedRaster: width=600 yada yada
                response.setContentType("/image/gif");
                OutputStream stream = response.getOutputStream();
                ImageIO.write(bufferedImage, "gif", stream);
                stream.close();... i found the code above on line and this is supposed to display a GIF to a web page.
    For a while the code was actually prompting if I wanted to download a file of type "/image/gif"?!?
    I did download and save it as temp.gif and the image was there when I opened it on my desktop.
    Something is in the byte array but I cannot get it to display on the page. So what am I doing wrong.
    So my question is this...
    How can I display the gif info stored as a byte [] (byte array) in a bean with a jsp page. I thought including a servlet that
    writes the bytes to the reponse would but no such luck. Is what I am trying possible? This newbie would greatly appreciate
    any advice :)

    First of all the following line is a little off:
    response.setContentType("/image/gif");should be
    response.setContentType("image/gif");What you should do is rather than do an include, try something like the following:
    <img src="/display" />If you're telling me that /display is mapped to the servlet that has the doGet you reference, this would be the proper way to do it.
    HTH.

  • How to not display nodes in a tree if Oracle roles are NOT used?

    How to not display nodes in a tree if Oracle roles are NOT used?
    We don't use Oracle DB roles to grant users access to Forms from the menu. We use a template and role system of our own. Basically a few tables with templates and roles.
    We want to convert our normal Forms menu to a tree menu and one of our key requirements is that when the tree is populated ONLY nodes with programs (i.e. forms) he has been granted to execute is shown.
    Since we don't use Oracle Roles how to do this in a tree?
    I created a function to show/hide LEAF nodes, BUT problem is that there are sub-menu nodes showing even if the leaf-nodes under it has not being displayed. My function has suppressed it.
    My tree query is like this:
    SELECT
         t.status, LEVEL, t.label, t.icon, t.node VALUE
    FROM
         tma_tree_menu t
    WHERE
    tma_authenticate_sys_chk_role(USER, t.node) = 1
    CONNECT BY
         PRIOR t.node = t.master
    START WITH
         t.MASTER IS NULL
    ORDER SIBLINGS BY
    t.position
    The tma_authenticate_sys_chk_role will return 1 only if the user has access to the form under that node.
    I tried the FTree functions in Forms but even that has nothing.
    Any help would be greatly appreciated.
    Edited by: Channa on Mar 17, 2010 6:49 AM

    Would you share the source code? I guess what I need is how exactly you retreive the user credentials from the DB table and set that boolean variable.
    and then how to condition it in UIX?

  • How do I display array values in a text field?

    Hi there-
    I have a small Flash movie I'm trying to complete, it's my
    first go around with Flash 8 so I appreciate your patience:
    I built an array with some actionscript which seems to work
    fine (I can trace it and all is well in the trace window). Now I'm
    simply trying to display it to my Flash movie screen and I've built
    a dynamic text window which is working, except that I only ever get
    the last array element to appear in the dynamic text window. I've
    traced the code and see all of my array values, but when I use
    "myResults_txt.text=picker_array;" I only see the last position's
    value in my array. I tried playing with the "multiline" attribute
    for the text field, it didn't seem to make any difference.
    I'm sure it's probably something silly that I've missed, but
    how do you display an array, with all of it's values to a dynamic
    text field (I even tried using the textArea component but ran into
    the same problem).
    Thanks in advance for any help-
    rich

    Thanks for your input. I tried just about everything but
    ended up re-writing the contents of the array to a var and looping
    through the var. Not my first choice but it got me to done.
    Thanks again,
    Rich

  • How do I display more than one month calendar in the day-view?

    iCal has always had a nice feature that allowed me to display little, what I call, mini-month calendars while in the day-view.  This allowed me to quickly jump to a day two or three (or more) months ahead (or behind) to check appointments on that day or set an appointment, without switching out of the day-view.
    The mini-month was a small clickable calendar that looked something like this:
    1   2   3   4   5   6   7
    8   9  10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    There was also a forward and backward arrow box [ < ][ > ] that allowed me to quickly scroll to the mini-month to find the day I wanted to click into.  And, if I wanted to give it more room by adjusting the frame, I could display up to three months at a time within my day view.
    Since upgrading iCal to 5.0 with the Lion upgrade, I can no longer display more than the current mini-month calendar on the day view.
    This is REALLY inconvenient.  Now, there is no way (that I know of) for me to stay in the day view and be able to jump ahead to a specific day two or three months out, or even to a day in the NEXT month without either going to the year view (a big waste of time) or click on the last day of the current month and then clicking the ">" day arrow to get to the next day which then shows that month's mini-calendar.
    How do I display more than the current month's mini-month calendar in the day view on Lion?

    Unfortunately you can't do what you want. Many people have complained to Apple about this. I suggest you provide Apple feedback directly at http://www.apple.com/feedback/macosx.html. They will not provide a direct response but hopefully if enough people provide feedback Apple will fix this.

Maybe you are looking for

  • Billing document not relevant at delivery header level

    Hi, In one of regular scenario i got the Billing document not relevant at delivery header level in processing tab. can plz advice me that what's the cause for this ? I am using item category tan at both sales order and delivery level. Thanks Bhushan

  • Photoshop CC2014 does not launch. Error message ' cannot initialize photoshop because of program error

    Hi, I get this error message (cannot initialize) after the splash screen. I have chatted with Adobe staff and spoke to one. I have un-installed and re-installed, created new administrator and installed, fixed permissions, deleted preferences, you nam

  • Why is it taking so long to download a TV show to my Video iPod

    I recently purchased a video iPod and am downloading my first tv show. It's an hour long show and it's been downloanding for close to an hour. Should it take this long?

  • Question email icon in Reader XI toolbar

    Good morning, I have several users who use adobe as default reader application (win7 Pro desktops). They use an application called Protivity within Google Chrome and one user has it setup so that when she opens, for example, a PDF receipt, it opens a

  • InDesign Plugin question

    Hi All, I was wondering if you or someone is currently looking for a new project. I am looking for a Adobe InDesign Plugin Developer who knows how to write extensions for the desktop publishing applications; Adobe InDesign and Quark. Familiarity with