Home | History | Annotate | Download | only in repository
      1 /*
      2  * Copyright (C) 2009 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.sdklib.internal.repository;
     18 
     19 
     20 /**
     21  * A monitor interface for a {@link ITask}.
     22  * <p/>
     23  * Depending on the task factory that created the task, there might not be any UI
     24  * or it might not implement all the methods, in which case calling them would be
     25  * a no-op but is guaranteed not to crash.
     26  * <p/>
     27  * If the task runs in a non-UI worker thread, the task factory implementation
     28  * will take care of the update the UI in the correct thread. The task itself
     29  * must not have to deal with it.
     30  */
     31 public interface ITaskMonitor {
     32 
     33     /**
     34      * Sets the description in the current task dialog.
     35      * This method can be invoked from a non-UI thread.
     36      */
     37     public void setDescription(String descriptionFormat, Object...args);
     38 
     39     /**
     40      * Sets the result text in the current task dialog.
     41      * This method can be invoked from a non-UI thread.
     42      */
     43     public void setResult(String resultFormat, Object...args);
     44 
     45     /**
     46      * Sets the max value of the progress bar.
     47      * This method can be invoked from a non-UI thread.
     48      *
     49      * This method MUST be invoked once before using {@link #incProgress(int)} or
     50      * {@link #getProgress()} or {@link #createSubMonitor(int)}. Callers are
     51      * discouraged from using more than once -- implementations can either discard
     52      * the next calls or behave incoherently.
     53      */
     54     public void setProgressMax(int max);
     55 
     56     /**
     57      * Increments the current value of the progress bar.
     58      * This method can be invoked from a non-UI thread.
     59      *
     60      * Callers MUST use setProgressMax before using this method.
     61      */
     62     public void incProgress(int delta);
     63 
     64     /**
     65      * Returns the current value of the progress bar,
     66      * between 0 and up to {@link #setProgressMax(int)} - 1.
     67      *
     68      * Callers MUST use setProgressMax before using this method.
     69      */
     70     public int getProgress();
     71 
     72     /**
     73      * Returns true if the user requested to cancel the operation.
     74      * It is up to the task thread to pool this and exit as soon
     75      * as possible.
     76      */
     77     public boolean isCancelRequested();
     78 
     79     /**
     80      * Creates a sub-monitor that will use up to tickCount on the progress bar.
     81      * tickCount must be 1 or more.
     82      */
     83     public ITaskMonitor createSubMonitor(int tickCount);
     84 
     85     /**
     86      * Display a yes/no question dialog box.
     87      *
     88      * Implementations MUST allow this to be called from any thread, e.g. by
     89      * making sure the dialog is opened synchronously in the ui thread.
     90      *
     91      * @param title The title of the dialog box
     92      * @param message The error message
     93      * @return true if YES was clicked.
     94      */
     95     public boolean displayPrompt(final String title, final String message);
     96 
     97 }
     98