Save a JTable (data+settings) ?

I want to save a complete JTable.
In my JTable I changed all,
that means I changed the hight of a row and the length from a coloumn to have the best view of the data.
I want to save the table with this changes.
I used for the JTable the AbstractTableModel.
I tried to save and load the AbstractTableModel Object with the ObjectOutputStream but it doesn't worked.
Only the Coloumnames was showing, but that's all.
I hope somebody can help me
Andreas

Your post gave me an idea and I didn't think it would work, but it seems to have done just fine. There has to be something wrong with this. It's too bizarre.import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class Test3 extends JFrame {
  String[] head = {"One","Two","Three"};
  String[][] data = {{"R1-C1","R1-C2","R1-C3"},
                     {"R2-C1","R2-C2","R2-C3"},
                     {"R3-C1","R3-C2","R3-C3"}};
  JTable jt = new JTable(data, head);
  byte[] bytes;
  Container content = getContentPane();
  int count = 0;
  public Test3() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    content.add(new JScrollPane(jt), BorderLayout.CENTER);
    JPanel buttonPanel = new JPanel();
    content.add(buttonPanel, BorderLayout.SOUTH);
    JButton save = new JButton("Save"), restore = new JButton("Restore");
    buttonPanel.add(save);
    buttonPanel.add(restore);
    save.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        try {
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          ObjectOutputStream oos = new ObjectOutputStream(baos);
          oos.writeObject(jt);
          oos.flush();
          oos.close();
          bytes = baos.toByteArray();
          content.add(new JPanel(), BorderLayout.CENTER);
          content.validate();
        } catch (Exception e) { e.printStackTrace(); }
    restore.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        try {
          ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
          ObjectInputStream ois = new ObjectInputStream(bais);
          JTable newTable = (JTable)ois.readObject();
          content.add(new JScrollPane(newTable), BorderLayout.CENTER);
          content.validate();
        } catch (Exception e) { e.printStackTrace(); }
    setSize(300,300);
  public static void main(String[] args) { new Test3().setVisible(true); }
}

Similar Messages

  • Is there a way to save multiple audio hardware settings?

    Hi Everyone,
                           I use a multiple preamp set up to record. I would like to be able to playback and do my editing without having to have my preamps all plugged in and just use the computer's built in hardware.  Of course as soon as I disconnect them Audition tells me I need to go back and set up my audio hardware settings since they have now changed.
    Is there any way I can save the audio hardware settings so that I can switch back and forth between the computer's audio hardware and my preamp set up without having to go back and manually enter all the settings each time?

    One feature request I've been meaning to submit has been remembering the previous settings for a device and defaulting to them when the device is re-selected.  Thanks for the reminder on that.
    As for CS6, you might be able to take advantage of the Machine-Specific Preferences feature to make this a bit easier.  Here's what I would recommend:
    Configure Audition with your primary audio device, get the Channel Assignments and all other settings how you like them, then close Audition.
    Next, you're going to copy one of the Audition preference files to another location on your system.  Your existing preference files will be located in one of the following locations:
           Mac OS X: /Users/<username>/Library/Preferences/Adobe/Audition/5.0/
           Windows XP: /Documents and Settings/<username>/Application Data/Adobe/Audition/5.0/
           Windows 7:  /Users/<username>/AppData/Roaming/Adobe/Audition/5.0/
        (Note that the "Library," "Application Data," and "AppData" folders may be hidden by the OS by default.)
    Copy the file MachineSpecificSettings.xml to the appropriate directory below:
         Mac OS X: /Library/Preferences/Adobe/Audition/5.0/
           Windows 7/XP (32-bit): /Program Files/Common Files/Adobe/Audition/5.0/
           Windows 7/XP (64-bit):  /Program Files (x86)/Common Files/Adobe/Audition/5.0/
    Launch Audition and make sure Preferences > Audio Hardware > Use Machine-specific device defaults is selected.  Now, each time you launch Audition it should attempt to load your primary device and configuration.  If it can't be found, you'll still be notified and able to select your built-in input/output, but the next time you launch with the primary device connected, it should load as if it never left.
    There's a bit more information on Machine Specific Settings on our Inside Sound blog post.  It wasn't intended for this use, but I think it will make this particular request a bit simpler.  Meanwhile, I'll make sure we have a feature in the database to look into this.

  • How do I use my I cloud account to save all my data no my device? I purchase $ 100 dollars deal because my phone memory was almost full.

    How do I use my I cloud account to save all my data no my device? I purchase $ 100 dollars deal because my phone memory was almost full.

    If you're asking if there is a way to add memory to your device, there isn't.  iOS devices have a fixed capacity that can't be expanded by using expansion cards or other hardware solutions.
    If you're running out of capacity on your devices, the only solution is to store less on your phone.  You can import your photos and videos to your computer as explained here: http://support.apple.com/kb/HT4083, then delete it from your device.  If you still want some of the photos on your device, put them in a folder on your computer then select the folder on the Photos tab of your iTunes sync settings and sync your device.
    You can also sync only some of your music to your device rather than your entire library, or subscribe to iTunes Match and stream it from iCloud.  You can also not keep as many movies, tv shows and other media on your device.

  • Time and date settings change when phone is powered down (not shut off)..

    I recently installed the iOS 8 update and immediately noticed that the time and date settings would change when I powered down my iPhone. I did not turn off my phone, only clicked the button to power down or save power. I have tried all the fixes, suggestions, etc., but I am still having issues. In the power down state, I am able to receive phone calls or texts but when I go into my phone, the time and date will be off. It stops from the moment I click the button to power down the phone. Please don't get this confused with turning off the phone completely. This happens when I click the button for power down or power save, however it is described.
    So, how do I fix it? Is the app/software for the clock the problem? Is the battery distribution the problem? For some reason, in power down mode, the clock is not receiving constant power in order to keep accurate time. It stops the moment I click the button.  Any suggestions? fixes, etc. I could try. Apple support techs were absolutely no help what-so-ever.

    This sounds exactly like what is going on with my phone, http://www.idownloadblog.com/2012/10/19/iphone-5-date-time-glitch/

  • Trouble with clock and date settings

    Hi Folks,
    Every time I start my G5 I get a message telling me to set the clock and date settings. I set them as requested and save them and put the little lock on them, but next time I start the computer the same message appears.
    Would anybody be able to assist please?
    Thanks in advance,
    Eddie

    You might need a new battery. Go to http://support.apple.com/manuals/ and find your exact model - the manual should show you where it's located and which type you need to buy. They're not expensive.

  • Java.io.NotSerializableException when overwrite the JTable data into .txt file

    hi everyone
    this is my first time to get help from sun forums
    i had java.io.NotSerializableException: java.lang.reflect.Constructor error when overwrite the JTable data into .txt file.
    At the beginning, the code will be generate successfully and the jtable will be showing out with the data that been save in the studio1.txt previously,
    but after i edit the data at the JTable, and when i trying to click the save button, the error had been showing out and i cannot succeed to save the JTable with the latest data.
    After this error, the code can't be run again and i had to copy the studio1.txt again to let the code run 1 more time.
    I hope i can get any solution at here and this will be very useful for me.
    the following is my code...some of it i create it with the GUI netbean
    but i dunno how to attach my .txt file with this forum
    did anyone need the .txt file?
    this is the code that suspect maybe some error here
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    String filename = "studio1.txt";
              try {
                  FileOutputStream fos = new FileOutputStream(new File(filename));
                  ObjectOutputStream oos = new ObjectOutputStream(fos);
                   oos.writeObject(jTable2);
                   oos.close();
              catch(IOException e) {
                   System.out.println("Problem creating table file: " + e);
                   return;
              System.out.println("JTable correctly saved to file " + filename);
    }the full code will be at the next msg

    this is the part 1 of the code
    this is the full code...i had /*....*/ some of it to make it easier for reading
    package gui;
    import javax.swing.*;
    import java.io.*;
    public class timetables extends javax.swing.JFrame {
        public timetables() {
            initComponents();
        @SuppressWarnings("unchecked")
        private void initComponents() {
            jDialog1 = new javax.swing.JDialog();
            buttonGroup1 = new javax.swing.ButtonGroup();
            buttonGroup2 = new javax.swing.ButtonGroup();
            buttonGroup3 = new javax.swing.ButtonGroup();
            buttonGroup4 = new javax.swing.ButtonGroup();
            jTextField1 = new javax.swing.JTextField();
            jLayeredPane1 = new javax.swing.JLayeredPane();
            jLabel6 = new javax.swing.JLabel();
            jTabbedPane1 = new javax.swing.JTabbedPane();
            jScrollPane3 = new javax.swing.JScrollPane();
            jTable2 = new javax.swing.JTable();
            jScrollPane4 = new javax.swing.JScrollPane();
            jTable3 = new javax.swing.JTable();
            jButton1 = new javax.swing.JButton();
            jButton2 = new javax.swing.JButton();
    /*       org.jdesktop.layout.GroupLayout jDialog1Layout = new org.jdesktop.layout.GroupLayout(jDialog1.getContentPane());
            jDialog1.getContentPane().setLayout(jDialog1Layout);
            jDialog1Layout.setHorizontalGroup(
                jDialog1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 400, Short.MAX_VALUE)
            jDialog1Layout.setVerticalGroup(
                jDialog1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 300, Short.MAX_VALUE)
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jLayeredPane1.add(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER);
            String filename1 = "studio1.txt";
            try {
                   ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename1));
                   jTable2 = (JTable) ois.readObject();
                   System.out.println("reading for " + filename1);
              catch(Exception e) {
                   System.out.println("Problem reading back table from file: " + filename1);
                   return;
            try {
                   ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename1));
                   jTable3 = (JTable) ois.readObject();
                   System.out.println("reading for " + filename1);
              catch(Exception e) {
                   System.out.println("Problem reading back table from file: " + filename1);
                   return;
            jTable2.setRowHeight(20);
            jTable3.setRowHeight(20);
            jScrollPane3.setViewportView(jTable2);
            jScrollPane4.setViewportView(jTable3);
            jTable2.getColumnModel().getColumn(4).setResizable(false);
            jTable3.getColumnModel().getColumn(4).setResizable(false);
            jTabbedPane1.addTab("STUDIO 1", jScrollPane3);
            jTabbedPane1.addTab("STUDIO 2", jScrollPane4);
            jTextField1.setText("again n again");
            jLabel6.setText("jLabel5");
            jLabel6.setBounds(0, 0, -1, -1);
            jButton2.setText("jButton2");
            jButton1.setText("jButton1");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
          

  • Java.io.NotSerializableException when overwrite the JTable data into .txt

    hi everyone
    i had java.io.NotSerializableException: java.lang.reflect.Constructor error when overwrite the JTable data into .txt file.
    At the beginning, the code will be generate successfully and the jtable
    will be showing out with the data that been save in the studio1.txt
    previously,
    but after i edit the data at the JTable, and when i trying to click the
    save button, the error had been showing out and i cannot succeed to
    save the JTable with the latest data.
    After this error, the code can't be run again and i had to copy the studio1.txt again to let the code run 1 more time.
    I hope i can get any solution at here and this will be very useful for me.
    but i dunno how to attach my .txt file with this forum
    did anyone need the .txt file?
    the following is my suspect code
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    String filename1 = "studio1.txt";
              try {
                  FileOutputStream fos = new FileOutputStream(new File(filename1));
                  ObjectOutputStream oos = new ObjectOutputStream(fos);
                   oos.writeObject(jTable2.getModel());
                   oos.flush();
                   oos.close();
                   fos.close();
              catch(IOException e) {
                   System.out.println("Problem creating table file: " + e);
                            e.printStackTrace();
                   return;
              System.out.println("JTable correctly saved to file " + filename1);
    }this is the reading code
    String filename1="studio1.txt";
            try {
                   ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename1));
                   TableModel model = (TableModel)ois.readObject();
                    jTable3.setModel(model);
                   System.out.println("reading for " + filename1);
              catch(Exception e) {
                   System.out.println("Problem reading back table from file: " + filename1);
                   return;
              }Edited by: Taufulou on Jan 8, 2009 11:43 PM
    Edited by: Taufulou on Jan 8, 2009 11:44 PM
    Edited by: Taufulou on Jan 8, 2009 11:45 PM

    is this the code u mean?
    i had put this code inside it but the problem still remain the same
    if (jTable2.isEditing()) {
                jTable2.getCellEditor().stopCellEditing();
            }i had found a new thing that when i just double click the cell without change any data inside the table
    and click the button "Save". the same exception which is
    java.io.NotSerializableException: java.lang.reflect.Constructor
    will come out again.

  • Date Manipulation Depending on the various user date settings

    hi,
    I have a query.
    In scripts, user date format setting is YYYY.MM.DD, values stored the table MHND are also in the format YYYY.MM.DD.
    However when i pass the date values from MHND from form to subroutine pool the dates are available in the format DD.MM.YYYY in the subpool.
    I want to calculate the diffenece between two dates. I have checked the function modules to calculate the differece betweent 2 dates those acccepts dates with type YYYYMMDD.
    However i tried to bring my dates in from YYYY.MM.DD into YYYYMMDD format by using CONVERT_DATE_INTERNAL function module... That is not working as the user date format is YYYY.MM.DD and the dates are coming in subpool in DD.MM.YYYY format....
    Please suggest me the approach the relavant function modules.... so as to manipulate the dates based on the user date settings.
    Looking forward for your replies. Thanks in advance.
    Regards,
    Anuja.

    hi anuja,
    Try using the following formatting  script symbol in your form routine
    For example, you are passing the date into the subroutine then put K after the date field like below.
    &date(K)& .
    or
    use SET DATE MASK : YYYY:MM:DD
    Thanks,
    Vamshi

  • No Longer able to Change Cellular Data settings. STUCK!!!!

    I AM USING AN UNLOCKED 3G iPHONE WITH TMOBILE SERVICE
    I use to be able to change the cellular data settings, but now out of the the blue. the options have changed!
    I would go to Settings>General>Network>Cellular Data> and then more options
    now when i get to _Cellular Data it only gives me the option to turn it off or on! like the wifi option_.
    It wasnt like this last week and i cant seem to get it back to the way it use to be. Ive reset the network settings with no luck.
    Without having the option to modify the cellular data settings i can no longer set my phone up to send/receive picture texts.
    *Please HELP*

    Abartylla wrote:
    I dont know what happened but I plugged my external monitor in and ever since I cannot change my energy saving preferences through the icon in the bar. The icon is still there but the option does not exist any longer. Any help is appreciated
    Those options were removed in 10.5.6. A well-documented change. Search these boards for more information.

  • I want to use Get Panel Image in Labview 5.0.1 and need details on how to save the BMP data generated

    I am trying to generate an application that saves a copy of its front panel on completion. This is easy to do using an invoke node with Print VI to HTML but this does not work in an .exe format. I have seen elsewhere that you have to use the Get Panel Image method, but no details are supplied in LV 5.0.1 documentation of how to use the "image" data (1-D Unsigned Byte array) that is generated. I want to save this in a format that can then be read as a bitmap in any standard graphics package. Any assistance?

    Hi,
    If you'd upgrade to LV5.1 or 6 you could use the 'standard' vi's for this.
    You need a VI called "Write BMP File.vi". It's not shipped with LV5.0.1.
    This vi only uses 3 subVI's, so perhaps someone at NI can convert it and
    send it to you (sorry, I won't, it's copywrited).
    If you cannot get this VI anywhere, you'll need to figure out the BMP file
    format yourself. It's not too complicated, but still could take some days.
    Perhaps someone figured it out before LV5.1 was released.
    Regards,
    Wiebe.
    "RDK" wrote in message
    news:[email protected]..
    > I want to use Get Panel Image in Labview 5.0.1 and need details on how
    > to save the BMP data generated
    >
    > I am trying to generate an application that saves a copy
    of its front
    > panel on completion. This is easy to do using an invoke node with
    > Print VI to HTML but this does not work in an .exe format. I have seen
    > elsewhere that you have to use the Get Panel Image method, but no
    > details are supplied in LV 5.0.1 documentation of how to use the
    > "image" data (1-D Unsigned Byte array) that is generated. I want to
    > save this in a format that can then be read as a bitmap in any
    > standard graphics package. Any assistance?

  • Save the input data of single WD4A screen

    Hi All,
    I am interested to know, whether as in the case of the ABAP report screen where we can save the input data as variant, is it possible for us to save all the input fields into a variant in WD4A.
    Thanks,
    Selvakumar M.,

    hi,
    Refer the following blogs on Variant in Wd Abap :
    /people/sharad.agrawal/blog/2008/08/21/creating-and-using-variant-in-select-options-with-web-dynpro-for-abap-1
    /people/sharad.agrawal/blog/2008/08/25/creating-and-using-variant-in-select-options-with-web-dynpro-for-abap-2
    I hope it will help you.
    Thanx.
    Saurav.

  • To Call Another Form and Save Related MAster Data from a Transaction Form

    Hi
    Our project requires that forms for creating masters be called whenever the value (Key Value) being referenced in other forms are not found. For doing this I had used the When-Validate-Item Trigger and checked for the key value in the master tables and if not present, I use the Call_Form method to call the master form and create the key value and then come back to the Form in which I was working to continue processing the rest of the data.
    It works well if the CAlling forms is in INSERT MODE but Not in UPDATE MODE ( returns a message A Calling Form has unapplied Changes, Cannot Save data (Error: FRM-40403)).
    This same feature I tried to work it out around with a Key-Next-Item Trigger, it works fine for both the cases but as long as the user tabs out of the field from keyboard controls like the Enter Key or the Tab Key. But in case he wishes to click on the next field or some other button with a mouse OR he uses a keyboard shortcut to do some other operation viz. F10 for saving data, the trigger is not fired and that returns a ORACLE error (in case a database Integration issue arises) OR saves an invalid data.
    I would like to know what kind of triggers could we write to exactly call a master form to save a new key value irrespective of whether the calling form is working in INSERT mode or QUERY Mode.
    One way to do it is to use EXIT_FORM(DO_COMMIT, NO_ROLLBACK). But if the Primary/Calling form is closed without a Commit, then the related Master DAta is also Not Saved.
    Please Let me know if we can save the master data whatever be the state of the CAlling Form permanently.
    Thanks and Regards

    You are going to need to POST in the Called Form rather than committing (and make sure that you do not rollback when you exit).
    The Post will insert the master record into the DB but it will not be committed until you issue the commit in the Calling Form.

  • "Unable to save the raw conversion settings. There was a write permission error."

    I just built a new workstation for processing photos using PS CS5. I use external drives to store my images as I find it easier for backing up as well as for when I want use my laptop for sorting, etc.. I copied over all my old "Collection" files, and of course, had to "fix" them once on the new machine. Once pointed in the right direction, the collections all fill out correctly.
    When I go to process a collection though, I encounter an odd problem I can't seem to sort out. I can delete files, rename files, copy/paste to the external drives, etc.. What I can't seem to do is add Labels, Ratings, or modify RAW settings. I mean, I can use ACR to make adjustments, I just can't seem to save them.
    The system just ignores label, rating commands completely. When I try to save an ACR adjustment I get this error. "Unable to save the raw conversion settings. There was a write permission error."
    The files are NOT write protected. I'm set up as the owner of my workstation, with complete control of the system. I can't seem to find any useful information about this error because the "write permission error" seems to only be happening on installs, so that's all I can find help for.
    My system:
    Intel Core i7 970@ 3.20GHZ
    24.0 GB RAM
    64-bit OS - Windows 7 Pro
    DX58S02 Motherboard
    NVIDIA GeForce GTX 580

    Thanks for replying. I've been going crazy trying to fix this.
    To answer your first question; I use sidecar XMP files. If everything from my archive was shot in RAW I'd try converting to DNG and see if embedding the changes directly in a file worked. Unfortunately, a lot of my old stuff was shot in JPG, so sidecars seems to be the best choice.
    When I add labels, ratings, as well as change RAW settings on files I place on my workstations HD everything works. It's only when I try to do these things with the same files on removable drives that I run into trouble. The drives I use are Transcend 640GB StoreJet 25ms connected via USB.
    I don't think it's a UAC problem. At least, to my understanding, doesn't that control how your machine alerts you to program changes? I looked into how to change ownership, and did so, but that didn't work. Here's a link to what I mean: http://www.addictivetips.com/windows-tips/windows-7-access-denied-permission-ownership/
    I'm stumped. I also hate the idea that I'll have to go through various folders to find images from already created collections, copy them to a new folder on my HD and then work on them. Then I'll have to put them all back... ugghhhh

  • T|X won't power on - and loses time/date settings

    I just bought a Palm T|X. After charging it, I set it up and then unplugged it. The problem is, it won't power up unless it's plugged in. When it does power up, the time and date settings have defaulted to 1/1/2005 00:00. However, it did keep the third party programs and contact data.
    Any ideas?
    Post relates to: Palm TX
    This question was solved.
    View Solution.

    One thought: Return it immediately to the store where you got it, if you just bought it, and get a replacement or your money back. .
    If you can't, call Palm and send it in for repair, or if you can, replacement. Palm has a couple of bugs, one is the start button. If you  can't get it to start, then it doesn't work. For what you paid, it should. The reboot (which is what is resetting your time and date)  may indicate a short or other non software problem. Don't fiddle. Get rid of it, get it replaced or get it fixed.
    Post relates to: Palm TX

  • How to Sort JTable data using Multiple fields (Date, time and string)

    I have to fill the JTable data with some date, time and string values. for example my table data looks like this:
    "1998/12/14","15:14:38","Unicorn1","row1"
    "1998/12/14","15:14:39","Unicorn2","row2"
    "1998/12/14","15:14:40","Unicorn4","row3"
    "1998/12/17","12:14:12","Unicorn4","row6"
    Now the Sorted Table should be in the following way:
    "1998/12/17","12:14:12","Unicorn4","row6"
    "1998/12/14","15:14:40","Unicorn4","row3"
    "1998/12/14","15:14:39","Unicorn2","row2"
    "1998/12/14","15:14:38","Unicorn1","row1"
    ie First Date field should be sorted, if 2 date fields are same then sort based on time. if date and time fields are same then need to be sorted on String field.
    So if any one worked on this please throw some light on how to proceed. I know how to sort based on single column.
    But now i need to sort on multiple columns.So what is code change in the Comparater class.
    Thanks in advance.. This is urgent....

    I think your Schedule objects should implement Comparable. Then you can sort your linked list using the Collections.sort() method without passing in a Comparator.class Schedule(Date date, String class) implements Comparable
      public void compareTo(Object obj)
        Schedule other = (Schedule)obj;
        return date.getTime() - other.getDate().getTime();
    }

Maybe you are looking for

  • Setting up Wiki Calendars in iCal with Active Directory Accounts

    I'm Having a little trouble wrapping my head around our Wiki Calendar Solution, Id like to find a way to get the 10.6 Wiki Server Calendar's in iCal Client - using our active directory authentication. I have a test 10.6 Server bound to our Active Dir

  • The table name of Mobile service auto created

    Dear all As we know the mobile service will automatically create the table in db if the client want to submit some data to cloud. But the table name which it created depends on the mobile service name, i.e., if the value setting in "MS_MobileServiceN

  • SPRO setting to call shipping screen in PO

    Hi Friends, Is there any SPRO configuration using that i can change the population of shipping subscreen in Purchase order which comes under item level. Please help....

  • Who's using CDC in the real world?

    Hello, I'm wondering how many of you are using JVMs that conform to the CDC specification out there? If so, what type of applications are you developing? Do you intend to use the Personal Profile when it comes along? Thanks in advance, Matt Green, Ja

  • How do you convert arabic format to English format in InDesign so bullets are on the left side?

    I received a document from a client to work on that was created in InDesign with english format. For some reason, when they sent it to me the bullets were converted to arabic format, so they are on the left side not right. Is there an easy way to con