Simple Threading Dillemma

I have a thread main game loop, I want to run constantly in the background:

import net.rim.device.api.ui.UiApplication;

public class NewGame extends UiApplication {

    /* gameState amd newGameState:
     *      1 - Main Menu
     *      2 - Options
     *      3 - Help
     *      4 - About
     *      5 - Exit
     *      10 - Play Game
     */
    public int gameState = 0, newGameState = 1;
        private boolean stillAlive = true;
    public MainGameLoop mainGameLoop;

    MainMenu mainMenu = new MainMenu(this);

    public static void main(String[] args){
        NewGame newGame = new NewGame();
                newGame.enterEventDispatcher();
    }

    public NewGame(){
                mainGameLoop = new MainGameLoop();
    }

        private class MainGameLoop extends Thread
        {
            MainGameLoop()
            {
                start();
            }

            public void run()
            {
                while (stillAlive)
                {
                    if (newGameState != gameState)
                    {
                        switch (newGameState)
                        {
                        case 1:
                            pushScreen(mainMenu);
                            gameState = newGameState;
                            Thread.yield();
                            break;
                        }
                    }
                }
                //Exit Game
                System.exit(0);
            }
        }
}

When he pushes the main menu, I get an error as soon as starts to thread the main menu animation.  If I start the main menu thread without running the thread of the main loop of the game, it works perfectly.  Then, of course, I am unable to run these 2 threads at the same time.  I tried to give the first thread as soon as the main menu thread starts, but it does not help.

I have also tried to main menu of sleep for 500ms ever iteration, even thought it is supposed to be suspended, but that didn't work either.

Here is the thread from the main menu.  I removed all my personal code not covered do not threads:

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.container.FullScreen;

public class MainMenu extends FullScreen
{
    NewGame newGame;
    public MainMenuLoop mainMenuLoop;
    public boolean stillAlive = true;
    //Menu Item Chosen (0-Play Game, 1-Options, 2-Help, 3-About, 4-Exit)
    private byte menuItem = 0;

    MainMenu(NewGame m)
    {
        super(FullScreen.DEFAULT_MENU | FullScreen.DEFAULT_CLOSE);
        newGame = m;

        //Load images

        mainMenuLoop = new MainMenuLoop();
    }

    private class MainMenuLoop extends Thread
    {
        MainMenuLoop()
        {
            start();
        }

        public void run()
        {
            while (stillAlive)
            {
            //Menu animations code here
                invalidate();
            }
        }

    }

    protected void paint(Graphics g)
    {
    //Drawing routine here
    }

    protected boolean navigationMovement(int dx, int dy, int status, int time) {
        //Check for Input from Trackball
        //Movement code here
        return true;
    }

    protected boolean navigationClick(int status, int time) {
        //Check for Clicks from Trackball
        return true;
    }

}

So, once more, if I call the main menu directly without using the main loop of the game, I have all the problems.  If I start the main loop of the game and call the main menu of him, I get an error when the thread starts.  Here is the error:

JVM error 104

Eception:

IllegalStateException

Thank you in advance!

Keith

As said previously, you don't need to run a thread explicitly to the "main menu" thread because stuff specific to the Blackberry user interface is already running within a thread, known as the "event thread". There are restrictions on other non-event threads trying to do some UI on the event from another thread thread (unless you synchronize on the lock event variable). When you gave birth to your thread and try to do things on the thread of the event, you will receive this exception.

Tags: BlackBerry Developers

Similar Questions

  • simple thread question

    Hello world

    My question is quite simple.  I have two text boxes. I wrote "123" in the first text box and 'abc' in the second area. When I put the two boxes, the content in the second box automatically flowed to the first area, because there was space in the first box. Now the first box shows "123abc", and the second box is empty.

    How to stop Indesign automatically cela. Is this possible?  I know I can do it by screwing the two boxes first then the input data, but I have already entered all my data and it save me a lot of time if I can just have screw now.   Thank you very much!

    Simon

    Until you put frames, insert a frame break in all Type > submenus insert a special character

    Then content don't flow from 1 in frame 2 frame when you put on, because you insert a frame break stops at what happens.

  • Porting an application multi-threaded for Adobe Air.

    Someone at - it never been faced with this task?

    The application in question has a thread about 10 in addition to the main user interface thread.

    Each thread is blocking ops in long-distance communication, GPS, HTTP, manipulation of the filesystem, processing of data of general application, SQL execution, etc.

    Very little of it is based on the direct interaction of the user.

    Is it possible to get something like this in Adobe Air?

    Or simply wait for Android/BB... which would be realistic player out right at about the time where that this port is complete.

    Support an implementation not threaded with threaded implementations could be a lot of work.  I would recommend waiting.

    AIR has a flash.utils.Timer class, or a simple setTimeout() call that uses only the timer below.  The question is not "burden" on the UI thread, depending on CPU load... work has to be done one way or the other.  The issue is latency, in terms of how long it takes the application to respond to user events, or how long to make the updates.  Do more that small pieces at a time in the main thread, you will feel your app slow and inconsistent, with irregular updates and (if you try) animations jerks.

    Thread safety is not a big deal, normally... it is a matter of concern for applications poorly structured in a multithreaded environment.  Properly structured multi-threaded applications will eventually look a lot like an AIR application, with respect to certain things (for example, GPS pilot or connections SQLite) communicating through mechanisms of threads (queues, events, etc.) with the main thread.

    Called async stuff basically back to the main thread.  What are the event listeners.  You might be better not think of it as a wire when even... it's not like your "main thread" in another application, perhaps, where you have full control.  This is the main thread in a framework of GUI like WxWidgets or QT or whatever... everything is done with events and you * must * return to the caller (the frame) as quickly as possible or you will have a user experience impact.  Basically, the entire application is a collection of event listeners, with no place where you can implement a "loop of interrogation" for example, as you might in a different environment.

    Rather than stuff on 'simple threaded environments', you should probably just search for "asynchronous programming" or "event-driven" stuff.  There not much more to it than that.

  • Display background running on the UI threads

    Hello

    Sometimes I get the situation, that an action of the user needs time to perform. So I put this work to a task or Service.

    I want to inform the user, that its action is still ongoing. Just a simple ProgressIndicator.

    I know how to do it with a single task, but theoretically, there could be multiple tasks running, even some who were not triggered by the action of the user.

    So I want a similar thing as in Eclipse or IntelliJ: a 'background' control, which displays all running threads.

    Y at - it an easy way to do it, I mean from the perspective of Service/task/Thread, not the user interface.

    Do I need to record each scheduled thread that I start control, for example, when it is scheduled?

    Should I derive from task to make this logic?

    Is there a way to "look" all discussions?

    What is the best approach?

    My idea was to add each task to the control. And control of listening to the property running. When it is finished, it is removed from the list of observable controls.

    But what of the simple Threads, which can be started somewhere outside the Thread of the JavaFX Application?

    For the more general part of the question (of Threads that can be lit outside the Thread of the JavaFX Application):

    I've never worked with this part of the Thread API, but the Threads belong to the ThreadGroups. You can retrieve the group that belongs to a Thread with Thread.getThreadGroup (). ThreadGroups are hierarchical; each ThreadGroup except the top-level ThreadGroup has a ThreadGroup parent (ThreadGroup.getParent ()) and you can get references to all children with ThreadGroup.enumerate (ThreadGroup []) ThreadGroups. Wire also has a getState() method that returns an instance of the enum Thread.State.

    Of course, none of this is observable in the sense of JavaFX properties, so you should probably periodically this survey instead of being able to listen passively to state changes.

    For the easier part, a few ideas:

    I did something that is conceptually similar to what you're trying to do. I have a client-server application in which the data model communicates with a remote EJB service layer. All calls to the service layer are threaded. The model exposes an IntegerProperty represents the number of tasks that are pending (i.e. waiting to be executed or running). Most of the calls to the model to result in the creation of a task which the call() method runs on the remote service. The relevant parts of the model look like this:

    public class Model {
      private final ExecutorService executorService ;
      private final IntegerProperty pendingTasks ;
      // ...
      public Model() throws NamingException {
        // ...
      executorService = Executors.newSingleThreadExecutor() ;
      pendingTasks = new SimpleIntegerProperty(0);
    }
    
      private void addListenersToTask(final Task task) {
      task.stateProperty().addListener(new ChangeListener() {
      @Override
      public void changed(ObservableValue observable,
      State oldValue, State newValue) {
      State state = observable.getValue();
      if (state == State.SUCCEEDED) {
      decrementPendingTasks();
      task.stateProperty().removeListener(this);
      } else if (state == State.FAILED) {
    task.stateProperty().removeListener(this);
      try {
      context.close();
      } catch (NamingException exc) {
      System.out.println("Warning: could not close context");
      }
      status.set(ConnectionStatus.DISCONNECTED);
      }
      }
      });
      }
    
      private void scheduleTask(Task task) {
      addListenersToTask(task);
      incrementPendingTasks();
      executorService.submit(task);
      }
    
      private void decrementPendingTasks() {
      if (! Platform.isFxApplicationThread()) {
      throw new IllegalStateException("Must be on FX Application thread");
      }
      if (pendingTasks.get()<=0) {
      throw new IllegalStateException("Trying to decrement non-positive number of pending tasks");
      }
      pendingTasks.set(pendingTasks.get()-1);
      }
    
      private void incrementPendingTasks() {
      if (! Platform.isFxApplicationThread()) {
      throw new IllegalStateException("Must be on FX Application thread");
      }
      pendingTasks.set(pendingTasks.get()+1);
      }
    
      public int getNumberOfPendingTasks() {
      return pendingTasks.get() ;
      }
    
      public ReadOnlyIntegerProperty numberOfPendingTasksProperty() {
      return pendingTasks ;
      }
    
      // ...
    }
    

    All jobs are scheduled to run by calling the scheduleTask (...) method above, which increments the property pendingTasks, and adds a listener to decrement it when it is finished. The only way for tasks to fail in this application is whether the remote service goes down (the other exceptions are thrown by tasks), this is why I close the naming failure context, and there is currently no functionality to cancel tasks. The code will have to change to meet the cancellation or failure, if this isn't the case.

    Of course, you could do more than a simple counter here using similar techniques. For example, you could keep a ObservableList for the tasks, add a task to the list when it is submitted and remove it when it is finished. Then, you could provide this list to control which can display the status of each task.

    Another option could be to write a wrapper for ExecutorService that has implemented this feature, rather than to implement in your model. (I can elaborate a little if it is not clear, but I have not actually tried it myself). If you somehow exposed this wrapper ExecutorService to the entire application and used for all your threading (which he is called to leave FXApplication thread or not) then you could at least be aware of these threads and should be able to monitor their relatively easily. All threads that were not executed via your wrapper ExecutorService would still be difficult to control.

    Not sure how much help that is.

  • How to install Windows XP on Satellite A300-146?

    Hi all

    I need to know how can I install Windows XP on to my Toshiba Satellite A300-146 since I have windows vista with Arabic and this very bad.
    I heard in the laptop we have a SATA hard drive and the problems of British Colombia, who has not read the material.

    Also, I want to know how I can change vista from Arabic to English interface?

    How can configure LAN?

    Just a question;
    Did you go through this forum and simple threads on this topic before you posted this new topic?

    There is a lot of discussion on the installation of Win XP on laptops with SATA controller!
    The procedure is always the same on most portable models!

    You have 2 options; fade you assign compatible in the BIOS SATA mode and would not need to install the SATA drivers or you let the SATA AHCI mode and would include the SATA drivers using an external floppy drive you would have built a new disk Win XP using nLite software.

    PS: SATA drivers are part of the Intel Storage Manager!

  • Portege R500 - fingerprint reader and SD card reader does not work

    Hello

    I hope someone can help me.

    I bought an opportunity Portege R500 (the warranty is still available until 12/2010) and set up with Windows 7 Home Premium.

    I installed all the drivers for Windows 7 from the specific model support page. Driver Vista have been installed for all drivers, which are not available in Windows 7.

    If everything works fine, except the fingerprint reader and the sd card slot.

    Fingerprints: I tried al a lot of drivers, even that of the R600 and R700 (such as proposed by someone here in the forum). When I run the Toshiba fingerprint utility, a text box tells me, that there is no connection with the sensor. Authentc software does not work either.

    SD card reader: I tried several SD cards from a card SD 2 GB simple and old (but functional) Kingston. According to the Director of devicce, the driver is correctly installed and running.
    The blue icon next to wireless light turns on and after a "long", a message box appears and asks me to format the card. It takes a little longer and then I get the massage, the card cannot be formatted. I tried the same procedure with a SDHC card 4 GB and a Micro SDHC card in a SD card adapter. Then of course the cards are identified but not usable and formatted.

    There are several reports of other users of the internet, the locations of sd card in computer models laptops different toshiba have problems under Windows 7.

    The two problems have emerged as well under Vista. My hope was, this upgrade to Win 7 solve poverty. Unfortunately remain the problems of th I have Win 7.

    Thanks in advance,

    Michael (Germany)

    Thanks for the feedback second
    By the way; It is a forum for user to user in this community, everyone is trying to help everyone, so if someone wants to say that he would be able to help, then you will get a response from such user maybe you should also pass a few simple threads in this forum and might help other users as well?

    Tip; BIOS update and setting BIOS by default (with F9) can solve many problems... it's worth a try...

    By the way; Win 7 is able to update the drivers automatically. I recommend that you run an update in Device Manager and let windows search for the update.

    I ve got another laptop and installed Win 7 as well. The card reader Vista driver has worked for me on Win 7 OS just a tip

  • Real-time, semaphores and Subvi

    Hello

    We use a handful of semaphores in our application of Realtime (2015) on a cRIO.  For cleanliness, I wanted to encapsulate each semaphore in their own VI.  When I did the semaphores didn't work properly.  I feel like it is fundamentals of labview which it reveals, and I need to know!

    So, below, is more or less the standard semaphore HelloWorld program - it's similar to the Labview Semaphore.vi Simple example.  'Digital' and 'Digital Slow' indicators increase more or less increments.

    The next thing I did was create a VI load functions of semaphore to acquire and release, as shown below.  You can ask "what's the point?  In my desired version of VI the semaphore would not control well, rather "prevail" within the VI (and avoid passing the semaphore throughout our program).  For this display (and test) I wanted to make things as simple as possible so that I spend in the semaphore.  Notice that the VI is not reentrant, making simple threaded.

    Using the VI in the test program is shown below (in a disabled state)

    It does not work!  I followed the program and acquiring works (a product thread and the other blocks), but will block the release (on the thread of the "Acquis").  Look in the Labview Release Semaphore.vi code I don't see a reason it would block (I can't add the points stop or probes to this code).

    Can someone make sense this for me?

    Thank you

    Steve

    I made this error even with a motor of Action using queues.

    Your problem is that only 1 appeal to the Subvi can arrive on time.  If you have a thread the semaphore by the Subvi.  Meanwhile, the other thread is waiting to be able to use the Subvi to acquire the semaphore so.  If the first thread finishes the consecutively Subvi and fact its task.  Meanwhile the other thread is blocked in the Subvi waiting for the semaphore to be released.  Now the first thread is made his duty and try to go to the Subvi to release the semaphore, but this is impossible since the second thread always uses the Subvi.  If the second thread blocks the first thread to use the Subvi and the first thread blocks the second thread by being not able to release the semaphore.  You are in a bind.

    Why do you use semaphores anyway?  I found that they are rarely needed in a properly modulated code.

  • CFLOCK

    I just wanted to know when I need to use CFLOCK.

    For example, should I CFLOCK when I give my data source database in my Application.cfc.

    If I use CFLOCK web server locks the database for timeout seconds to connect to the database server?

    Your information and your help is much appreciated,

    Kind regards

    Iccsi,

    You need to lock when there will be a competitive situation, that's about it. http://en.Wikipedia.org/wiki/Race_condition#example

    onApplicationStart() is simple threaded when she is called in the context of the application of the life cycle (http://adamcameroncoldfusion.blogspot.co.nz/2012/07/onapplicationstart-is-not-intrinsicall y.html), so there is no need to worry about locking scope application stuff in there.

    --

    Adam

  • javafx.concurrent.Task? Docs? Examples? Support recall GUI?

    I want to do something simple:

    Thread of GUI-> blow of background task that runs in the background thread.
    Background full-> reminder of triggers in the GUI thread

    The new beta, b36, a javafx.concurrent.Task, which should support this. I can't find any documentation or the sample code on it, and I cannot infer from the API signature how to achieve this.

    I posted this same question on the article of Richard Blair about this, but no one answered and article itself has excerpts of stale code and does not also address the callback number.

    With the help of Richard previous documentation and NetBeans I could do a simple service + the task of loading a file in the background:

        private void openFileAsync(final File file) {
            final PlotRepLoaderService repLoaderService = new PlotRepLoaderService(file);
            repLoaderService.stateProperty().addListener(new ChangeListener() {
    
                /**
                 * {@inheritDoc}
                 */
                @Override
                public void changed(ObservableValue observable, State oldValue, State newValue) {
                    if (newValue == State.SUCCEEDED) {
                        // Setup display.
                        Rep plotRep = repLoaderService.getValue();
                        PlotRepPane plotRepPane = new PlotRepPane(plotRep);
                        root.setCenter(plotRepPane);
                    }
                }
            });
            repLoaderService.start();
        }
    
    /**
     * Service which loads plot.rep file asynchronously.
     * @author Fabrice Bouyé ([email protected])
     */
    public class PlotRepLoaderService extends Service {
    
        private File file;
    
        public PlotRepLoaderService(File file) {
            this.file = file;
        }
    
        /**
         * {@inheritDoc}
         */
        @Override
        protected Task createTask() {
            return new Task() {
    
                /**
                 * {@inheritDoc}
                 */
                @Override
                protected Rep call() throws Exception {
                    System.out.printf("Reading file \"%s\"", file.getAbsolutePath()).println();
                    Rep plotRep = RepReader.read(file);
                    return plotRep;
                }
    
                /**
                 * {@inheritDoc}
                 */
                @Override
                protected void done() {
                    System.out.println("done()");
    
                }
            };
        }
    }
    

    Initially, I tried to listen to change in the workDoneProperty, but discovered that he is never called, so I guess that miss me about the workings in my work (I'll find out when the documents & samples are displayed) or maybe it's a bug:

            repLoaderService.workDoneProperty().addListener(new ChangeListener() {
                /**
                 * {@inheritDoc}
                 */
                @Override
                public void changed(ObservableValue observable, Number oldValue, Number newValue) {
                    System.out.printf("workDone %f -> %f", oldValue, newValue);
                }
            });
    
  • Batch does not apply ACR image settings

    I am aware that this has been posted, but all the related messages are filled with too many ancient ambiguity, so I was hoping to create a simple thread with a simple answer.

    At 30 photos (JPG)

    Open them in camera raw in bridge (CTRL-R), change them accordingly, application of different cultures, saturation, exhibitions

    Click done

    Then start a new record in photoshop

    Select an image, I edited, open in camera raw (Image settings Yes is checked)

    Open this image (Oh hey look at my record, it's all my specific values published for this image, recording is not good but I will continue)

    Resize

    Save

    Close

    While many stations have asked before... why, when I run this batch, all my image settings follow the first, why they cannot follow their respective raw image settings?

    Additional info:

    CHECKED:

    Override Open

    Override save as

    Sad thing is I'm sure I've done this before after tinkering for a while, but don't remember what magical switch no I spilled. Thanks in advance.

    When you open the original raw images to save the workflow settings, they open in Photoshop or bridge?

    The best way to save the workflow settings (which is the ONLY thing you want to record) is to start recording the action and then open a raw directly in Photoshop (no bridge) change NOT the image settings, open the image in Photoshop, use the procedure of PS, save as and close and stop recording... so yes do not ensure that you choose the commands "Open" Override Action to ignore the registered open process and use only registered workflow settings and Yes, you must select override Action "save under" to make sure that you ignore the save options destination format and use only the saved file...

  • Example of simple background thread and question - please help

    I have finally updated a list via a web services call field without blocking the loading of a screen.

    I want to the loading screen, put a "Please wait" in a field, and then replace the listfield by the vector of calling web services.

    I wrote the simple example below just to see if I have the basics, and I guess that I don't have.

    My label never changes to 'done '.

    I'm sure it's something Liberty fabrics I have left.

    import net.rim.device.api.ui.UiApplication;
    import net.rim.device.api.ui.component.LabelField;
    import net.rim.device.api.ui.container.MainScreen;
    
    public class HomeScreen extends MainScreen
    {
        LabelField lf;
        private Runnable runnable;
    
        public HomeScreen()
        {
            lf = new LabelField("Begin");
    
            runnable = new Runnable() {
                public void run()
                {
                    lf.setText(test());
                }
            };
    
            this.add(lf);
            UiApplication.getApplication().invokeLater(runnable);
        }
    
        String test()
        {
            try {
                UiApplication.getUiApplication().wait(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return "Finished";
        }
    }
    

    No, an executable is retired after his execution.

  • BlackBerry Smartphones Simple Question - a storm handset does support all technologies without thread - GSM and CDMA?

    Hi all

    I read free ads storms where they indicate the Verizon Storm (ANSI CDMA) has been unlocked and can be used on any network, including AT & T and T-Mobile (GSM).  Is this true or false just advertising?  I don't see how that's possible.  GSM and CDMA protocols are completely different air interfaces.  In my view, there must be at least 2 verisons of the storm.  One for CDMA (Verizon and Sprint) and one for the mobile PHONE (T-Mobile and AT & T)

    Please notify.

    Thank you...

    Neil

    We like to make life easier for you

    If I helped you please click Kudo

  • Why there are no simple option to create an account? Why should people go through all this just to comment on a post?

    I tried to comment on a post here which really helped me. I wanted to show my gratitude, but firefox says I need an account for this, but there was no sign in option. It took me so long to go through all the drama out of the blue. Just make it simple.

    Most of the time users have problems that have already been resolved.
    This is the reason why we recommend users to consult articles support and resolved the questions before asking a new question.

    In fact Mozilla Support allow users to leave their comments on a thread or a response without any account with 3 buttons:

    • I have also this problem, under question
    • Yes and No next of what was useful for you? below each answer

    (see attached screenshot)

    More the vote of a question or an answer, more increases its visibility.

  • I need my emails to remain as unique enties [as if they were in my box OUTLOOK] with absolutely no THREADS or interconnection so how can I disable this Hul Baillie

    First of all, iv tried to solve this problem by studying all areas as yuv led me to. None of them seem to deal directly with desperately boring THREADS that seem to be a default type setting disabling. Second, im new to all this computer stuff and, frankly, you use so much jargon and other meanings of words than other previous meanings for that much of what iv been brought to read, has baffled me and I can't decide if theres a solution somewhere in the text. Please talk to me with words very very simple instead of tabs or Tags and other like that you assume that im familiar with. I keep a list of categories on the left side of my THUNDERBIRD in box and I transfer each msg that I do not delete in the appropriate category where I can easily see each of them [with its new range of topic identification] I could have the opportunity to come back at a later date. With your SON frustrating completely undermine my system simple and effective; IM at the end of my teather and considering alternatives to THUNDERBIRD, but you come highly recommended a TI from my friends and if we (you and me) can sort seeds, im anticipating a long and useful association. In the simplest terms, please take me thru step by step simple and clear, every action, I must take to never see any reference to a any pure interference with my emails. And I appreciate that to treat someone of my ilk requires a certain amount of patience and time. Thank you! Hi Baillie Hull

    Press the CTRL key and holding down there press V
    in this menu select sort by.
    Then select unthreaded from the submenu.

    OK Threads are now extinct.

  • How to display a list of all email without the indetations thread?

    I must have clicked the wrong thing. Now one of my lists of folders of email has the emails with the same subject all indented which I assume is the THREAD size. I want to keep things simple and just to list them in the order of time. How to I get rid of the thread indented format?

    View (alt + V) menu > sort by > non threaded

Maybe you are looking for

  • How do I uninstall the Toshiba warranty registration

    I recorded my warranty for laptop. Later, I did a full restore of the system the Toshiba registration icon/program is back. How to uninstall this program? It won't let me register twice. Normally I find what I need in Add/Remove Programs, but not thi

  • 2 General theoretical issues

    Hello 1. If the battery is empty (at all) a computer wil start the computer or not? 2-yes I put my ISP router to an empty place to not become overhitted? Thank you Johan

  • Windows will not activate after the hard drive is replaced on Windows 7 Home Premium.

    Recently, I had a hard drive crash and had to replace my hard drive. I took it to a computer to fix store, and they have installed and gave me a new drive for windows 7 Home premium. However, it was not approved, and I have no key validation. How can

  • Problem with slides on the new Captivate 8 model objects

    Hi allRecently, when I created a new project model of slide objects are all too big to slide, no matter which project to choose.  I have uninstalled and reinstalled the product several times and deleted all the files about the problem but I still can

  • Dutch CS6 to French language changer

    HelloI installed a version of CS6 Web Design software on a computer the license was in Dutch because that's what the store sold me.I would like to have the entire suite available in French.How can I do?In advance, thank you.G.Stephenne