Detecting non-activitiy in swing application

Hi there,
I need to know how do I detect non-activity in my swing application, let's say if the user doesnt do anything in 10min I want to do "something".
Is that possible? Maybe using a listener to the whole application or something like that?
Thanks

You can take a look at my [Application Inactivity|http://www.camick.com/java/blog.html?name=application-inactivity] link which has an example that uses an AWTEventListener along with a Swing Timer to provide a solution.
Take a look at java.awt.event.AWTEventListener and java.awt.event.AWTEventListenerProxy.When I use an AWTEventListener, I use code like the following:
long eventMask = AWTEvent.MOUSE_MOTION_EVENT_MASK + AWTEvent.MOUSE_EVENT_MASK;
AWTEventListener listener = someListener();
Toolkit.getDefaultToolkit().addAWTEventListener( listener, eventMask);When I looked at the API for AWTEventListenerProxy I see that you construct it with an eventMask and an AWTEeventListener.
So how do you use this class? Do you add it to the toolkit? If so, then why do you specify the eventMask twice?
Edited by: camickr on Oct 24, 2008 9:50 PM

Similar Messages

  • How to get mouse wheel action in my swing application?

    Hi
    In my mouse, i am having mousewheel to support scrolling.With the help of the wheel, i can scroll the pages in IE browser or any other appliction.
    In swing application ,i have scroll bar inside a JFrame.I want to have mousewheel action in my swing application to support scrolling.
    any idea ???
    Thanks

    As far as I know,there is no facility for detecting mouse scrolling wheel in JDK 1.3.
    Check it in the later releases of JDK.

  • Invoking a Java swing application via its process id

    I have a Java swing application. What i am trying to do here is that when the user double-clicks the jar file to open it, if the Swing application is already open and is minimized, I need to maximize the open window and make it active.
    I tried using 'jps -l' command in my new instance, and with the help of Runtime.exec() am able to detect whether the application is already running or not, and if running, am able to get the process id and am displaying a message to user indicating the window is already open.
    But how do i maximize the window of an already running application? Is it possible?

    user13333704 wrote:
    I have a Java swing application. What i am trying to do here is that when the user double-clicks the jar file to open it, if the Swing application is already open and is minimized, I need to maximize the open window and make it active. That's not hard to do, but your proposed solution is hard to do. The usual way to have only one instance of a Java application running is this:
    Have the application open a SocketServer on a certain port number. Since only one process can listen on a port, the second instance of the application will fail when it tries to open the SocketServer. When that happens, the second instance should terminate instead of displaying its own GUI. Whether it terminates silently or whether it displays a dialog is up to you.
    If you want the second instance to communicate with the first instance, that's easy because the first instance is listening on the port. So the second instance could connect to that port and send a message to it. In your case the first instance would respond to that message by maximizing its GUI.

  • Launching Adobe Viewer from a Swing application

    How do I launch Adobe Viewer (or Reader) from my Swing application. I have a help menu item that needs to open the viewer with the PDF help manual. Since the application is cross-platform, do I need different versions of Adobe with my install package? Thanks for any help.

    Thanks. I tried the adobe bean and it seems to work fine until I select the "Print" icon. It crashes the Viewer and my application as well. I get the following:
    Any suggestions?
    An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : 11 occurred at PC=0xff2c614c
    Function name=realloc
    Library=/lib/libc.so.1
    Current Java thread:
    at sun.awt.motif.MTextFieldPeer.create(Native Method)
    at sun.awt.motif.MComponentPeer.init(MComponentPeer.java:169)
    at sun.awt.motif.MComponentPeer.<init>(MComponentPeer.java:179)
    at sun.awt.motif.MTextFieldPeer.<init>(MTextFieldPeer.java:68)
    at sun.awt.motif.MToolkit.createTextField(MToolkit.java:85)
    at java.awt.TextField.addNotify(TextField.java:194)
    at java.awt.Container.addNotify(Container.java:1579)
    at java.awt.Panel.addNotify(Panel.java:74)
    at java.awt.Container.addNotify(Container.java:1579)
    at java.awt.Window.addNotify(Window.java:349)
    at java.awt.Dialog.addNotify(Dialog.java:247)
    at java.awt.Window.pack(Window.java:367)
    at com.adobe.acrobat.gui.PDFPrint$PageRangeDialog.<init>(PDFPrint.java:144)
    at com.adobe.acrobat.gui.PDFPrint.<init>(PDFPrint.java:18)
    at com.adobe.acrobat.gui.PrintUI.printPages(PrintUI.java:183)
    at com.adobe.acrobat.gui.PrintUIVerb$PrintTransactor.printFileWithUI(PrintUI.java:591)
    at com.adobe.acrobat.gui.PrintUIVerb$PrintTransactor.buildChanges(PrintUI.java:556)
    at com.adobe.pe.notify.Transactor.commit(Transactor.java:44)
    at com.adobe.pe.awt.UIVerb$1.buildChanges(UIVerb.java:151)
    at com.adobe.pe.notify.Transactor.commit(Transactor.java:70)
    at com.adobe.pe.awt.UIVerb.invoke(UIVerb.java:51)
    at com.adobe.pe.awt.ToolBar.mouseReleased(ToolBar.java:419)
    at java.awt.Component.processMouseEvent(Component.java:3715)
    at java.awt.Component.processEvent(Component.java:3544)
    at java.awt.Component.dispatchEventImpl(Component.java:2593)
    at java.awt.Component.dispatchEvent(Component.java:2497)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
    at java.awt.Container.dispatchEventImpl(Container.java:1200)
    at java.awt.Component.dispatchEvent(Component.java:2497)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
    Dynamic libraries:
    0x10000 /shared/j2sdk1_3_1/bin/../bin/sparc/native_threads/java
    0xff360000 /lib/libthread.so.1
    0xff3a0000 /lib/libdl.so.1
    0xff280000 /lib/libc.so.1
    0xff260000 /usr/platform/SUNW,Ultra-4/lib/libc_psr.so.1
    0xfe480000 /local/j2sdk1_3_1/jre/lib/sparc/client/libjvm.so
    0xff210000 /lib/libCrun.so.1
    0xff1f0000 /lib/libsocket.so.1
    0xff100000 /lib/libnsl.so.1
    0xff1c0000 /lib/libm.so.1
    0xff240000 /lib/libw.so.1
    0xff0e0000 /lib/libmp.so.2
    0xff0a0000 /local/j2sdk1_3_1/jre/lib/sparc/native_threads/libhpi.so
    0xff070000 /local/j2sdk1_3_1/jre/lib/sparc/libverify.so
    0xff030000 /local/j2sdk1_3_1/jre/lib/sparc/libjava.so
    0xfe450000 /local/j2sdk1_3_1/jre/lib/sparc/libzip.so
    0xfd060000 /local/j2sdk1_3_1/jre/lib/sparc/libawt.so
    0xf4880000 /local/j2sdk1_3_1/jre/lib/sparc/motif21/libmawt.so
    0xfd010000 /shared/j2sdk1_3_1/bin/../jre/lib/sparc/libmlib_image.so
    0xf4600000 /lib/libXm.so.4
    0xf4580000 /lib/libXt.so.4
    0xfafd0000 /lib/libXext.so.0
    0xfafa0000 /usr/openwin/lib/libXtst.so.1
    0xf4480000 /lib/libX11.so.4
    0xfac60000 /lib/libSM.so.6
    0xfac30000 /lib/libICE.so.6
    0xf4380000 /local/j2sdk1_3_1/jre/lib/sparc/libfontmanager.so
    0xf4ba0000 /usr/openwin/lib/libdps.so.5
    0xf4860000 /shared/j2sdk1_3_1/bin/../jre/lib/sparc/libsunwjdga.so
    0xf4830000 /usr/openwin/lib/libdga.so.1
    0xf4560000 /shared/j2sdk1_3_1/bin/../jre/lib/sparc/libxinerama.so

  • Guidelines for deciding directory structure for Swing Application

    Hi,
    We are developing a Swing Application for our organization. We want to organize the code and resources/icons/properties files in correct manner.
    We have guidelines for arranging the code for web application. Is there any such guidelines available for desktop application as well? What is the preferred location for keeping the icons and properties files?
    Regards,
    Manu

    Thanks Maran.
    I have already checked many installation guides before posting here. All of them mention about creating folders like /admin or /oradata on various mount points but none of the naming conventions really indicate whether it is a 8i database or a 10g database.
    This is required when you are having multiple Oracle installations under /opt and databases are running from different mount points.
    Regards,

  • TAB key isn't available in swing applications on Linux

    Hello,
    I have a small Swing application, everything works fine except that TAB key isn't available within java
    application. I tried several JVM (IBM and Sun JVM from 1.2.2 to 1.4.0_b92) and two Red Hat release (6.2 and 7.2), I had no success with TAB key. The same application works perfectly on Windows for example. Can this problem have something to do with a bad Xmodmap file? I tried with a standard Xmodmap file (/usr/X11R6/lib/X11/etc/xmodmap.std), but TAB key was still unavailable. On non-java application, TAB key is available normally.
    Any suggestion would be appreciated.
    Thanks in advance.

    Do you mean that
    (1) when you are running a swing application and you press the tab key expecting focus traversal, nothing happens?
    OR
    (2) when you are listening for KeyEvent within your application, tab key doesn't give you KeyEvent.VK_TAB?
    OR
    (3) something else?
    I have no Linux but would try to offer suggestions if I understood better.

  • Place to store custom parameters (properties) in swing application

    In a relatively simple swing application, I was wondering how should I handle choosing of custom parameters like database userid and password. I think for a simple application I can use xml file for setting the userid and password. But that leads to some doubts.
    1. The xml file cannot be included in the jar distribution beacuse otherwise the user will not be able to change the settings.( We don't expect the user to unjar the file, change the settings and repackage it). So where should the xml file be put ?
    2. In my program, I should be able to read the xml file based on the relative path (which ideally should begin from the location where the jar is stored). How would I achieve that.
    That said, if there is some other way, easier or more suited for this kind of functionality, please let me know.
    regards,
    nirvan.

    Jam_IT wrote:
    (new File("")).getAbsolutePath();If the file is not there, ..My understanding is that if the user drags a shortcut to the Jar onto the desktop, that absolute path will point to the desktop.
    On a related note. Sun has decided it is no business of code to know where it is stored. Changes to applets and JWS now ensure the code cannot discover the installation location (even for digitally signed and fully trusted code). Non-JWS/applet projects might be able to still get a File location using ..
    URL url = ourObject.getClass().getProtectionDomain().getCodeSource().getLocation();..but I would not bank on that still working in Java's 7 or 8..

  • Is there free java chat, which i can embed in my Swing application

    Hello all,
    I have a Swing application and i want to embed java chat into it.
    Can you recommend me free chat for which i can see and modofy client and server sources.
    Regards,
    Chavdar

    No.

  • How to give Common Background color for all JPanels in My Swing application

    Hi All,
    I am developing a swing application using The Swing Application Framework(SAF)(JSR 296). I this application i have multiple JPanel's embedded in a JTabbedPane. In this way i have three JTabbedPane embedded in a JFrame.
    Now is there any way to set a common background color for the all the JPanel's available in the application??
    I have tried using UIManager.put("Panel.background",new Color.PINK);. But it did not work.
    Also let me know if SAF has some inbuilt method or way to do this.
    Your inputs are valuable.
    Thanks in Advance,
    Nishanth.C

    It is not the fault of NetBeans' GUI builder, JPanels are opaque by default, I mean whether you use Netbeans or not.Thank you!
    I stand corrected (which is short for +"I jumped red-eyed on my feet and rushed to create an SSCCE to demonstrate that JPanels are... mmm... oh well, they are opaque by default... ;-[]"+)
    NetBeans's definitely innocent then, and indeed using it would be an advantage (ctrl-click all JPanels in a form and edit the common opaque property to false) over manually coding
    To handle this it would be better idea to make a subclass of JPanel and override isOpaque() to return false. Then use this 'Trasparent Panel' for all the panels where ever transparency is required.I beg to differ. From a design standpoint, I'd find it terrible (in the pejorative sense of the word) to design a subclass to inconsistently override a getter whereas the standard API already exposes the property (both get and set) for what it's meant: specify whether the panel is opaque.
    Leveraging this subclass would mean changing all lines where a would-be-transparent JPanel is currently instantiated, and instantiate the subclass instead.
    If you're editing all such lines anyway, you might as well change the explicit new JPanel() for a call to a factory method createTransparentJPanel(); this latter could, at the programmer's discretion, implement transparency whichever way makes the programmer's life easier (subclass if he pleases, although that makes me shudder, or simply call thePanel.setOpaque(false) before returning the panel). That way the "transparency" code is centralized in a single easy to maintain location.
    I had to read the code for that latter's UI classes to find out the keys to use (+Panel.background+, Label.foreground, etc.), as I happened to not find this info in an authoritative document - I see that you seem to know thoses keys, may I ask you where you got them from?
    One of best utilities I got from this forum, written by camickr makes getting these keys and their values very easy. You can get it from his blog [(->link)|http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/]
    Definitely. I bit a pair of knucles off when discovered it monthes after cumbersomely traversing the BasicL&F code...
    Still, it is a matter-of-fact approach (and this time I don't mean that to sound pejorative), that works if you can test the result for a given JDK version and L&F, but doesn't guarantee that these keys are there to stand - an observation, but not a specification.
    Thanks TBM for highlighting this blog entry, that's the best keys list device I have found so far, but the questions still holds as to what specifies the keys.
    Edited by: jduprez on Feb 15, 2010 10:07 AM

  • I want to implement thems functionality in  my swing application

    Hi All...
    I want to implement the themes object in my swing application,How ,where to start and move that functionality,If anybody use this functionality in your program experience can u share with me.
    Than to Advance
    ARjun...

    Hi Kuldeep Chitrakar
    I can do that in web intelligence. dont want that
    I am replicating some of the sample report of SQL Servers in BusinessObjects XI R3.1.
    One of the SQL Sever's report is of product catalogue type that gives complete information like name, category, description along with the products image etc... for each of the products.
    I am trying to replicate the above said SQL Server report in Business objects XI R3.1. I am facing problem in bringing the image in to my BO report. The image resides in a table and its datatype is of varbinary(max). I don't know the exact matching while creating an object in the uiverse designer.
    Here is the url link http://errorsbusinessobjectsxir3.blogspot.com/2010/10/business-objects-image-errors.html
    Regards
    Prasad

  • Can not launch swing application from Java Web Start 1.6.0_37

    I have a dynamic generated jnlp file from a serlvet. When I used Java Web Start to start the swing application, it failed. The exception showed
    com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://xxxx.xx.com:9080/dilpipweb/Test-1.0-SNAPSHOT.jar
         at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
         at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
         at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
         at java.util.concurrent.FutureTask.run(Unknown Source)
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    I used janela to validate the generated jnlp file. It was valid. I also checked the tomcat access log, it showed that the Test-1.0-SNAPSHOT.jar file was accessed correctly (with a 200 return code).
    Can anyone help me what was the problem?
    Thanks,

    Hi.
    I got a different problem. My Corba application works in JRE 1.6, but doesn't works in JRE 1.5.X. I got an unexpected error and my console shows:
    getSubjectX500Principal NoSuchMethodError: java.lang NoSuchMethodError
    #### Java Web Start Error:
    #### null
    Can you help me?

  • Java Swing application problem in Windows vista

    When we execute the Swing application in windows vista environment.
    The look and feel of the swing components are displayed improperly.
    Do we need to put any specific look and feel for windows vista environment or any specific hardware configuration is required to setup windows vista environment.
    Please give some inputs to solve the problem.
    We have tried with the following sample code to run in windows vista.
    * Vista.java
    * Created on December 5, 2006, 5:39 PM
    public class Vista extends javax.swing.JFrame {
    /** Creates new form Vista */
    public Vista() {
    initComponents();
    pack();
    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
    jButton1 = new javax.swing.JButton();
    jToggleButton1 = new javax.swing.JToggleButton();
    jPanel1 = new javax.swing.JPanel();
    jCheckBox1 = new javax.swing.JCheckBox();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTextArea1 = new javax.swing.JTextArea();
    jTextField1 = new javax.swing.JTextField();
    getContentPane().setLayout(null);
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    jButton1.setText("Button 1");
    getContentPane().add(jButton1);
    jButton1.setBounds(20, 20, 170, 30);
    jToggleButton1.setText("Togle btn");
    getContentPane().add(jToggleButton1);
    jToggleButton1.setBounds(100, 80, 90, 20);
    jPanel1.setLayout(null);
    jCheckBox1.setText("jCheckBox1");
    jCheckBox1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
    jCheckBox1.setMargin(new java.awt.Insets(0, 0, 0, 0));
    jPanel1.add(jCheckBox1);
    jCheckBox1.setBounds(10, 40, 130, 13);
    getContentPane().add(jPanel1);
    jPanel1.setBounds(10, 150, 200, 130);
    jTextArea1.setColumns(20);
    jTextArea1.setRows(5);
    jScrollPane1.setViewportView(jTextArea1);
    getContentPane().add(jScrollPane1);
    jScrollPane1.setBounds(210, 150, 164, 94);
    jTextField1.setText("jTextField1");
    getContentPane().add(jTextField1);
    jTextField1.setBounds(240, 30, 140, 30);
    pack();
    }// </editor-fold>//GEN-END:initComponents
    * @param args the command line arguments
    public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
    new Vista().setVisible(true);
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JToggleButton jToggleButton1;
    // End of variables declaration//GEN-END:variables
    }

    When we execute the Swing application in windows
    vista environment.
    The look and feel of the swing components are
    displayed improperly.Improperly means what? You must be aware that Vista's native L&F certainly isn't supported yet.

  • Need Help to update the labels in the GUI syncronously - Swing application

    Hello everyone,
    I need some help regarding a swing application. I am not able to syncronously update the counters and labels that display on my Swing GUI as the application runs in the background. But when the running of application is completed, then the labels on the GUI are getting updated, But I want update the labels and counters on the GUI syncronously as the code executes... below I am giving the format of the code I have written..............
    public class SwingApp extends JFrame{
            // here i have declared the label and component varibles like...
                      private JTextField startTextField;
           private JComboBox maxComboBox;
           private JTextField logTextField;
           private JTextField searchTextField;
           private JLabel imagesDownloaded1;
           private JLabel imagesDownloaded2;
           private JLabel imagesDidnotDownload1;
           private JLabel imagesDidnotDownload2;
                      private JButton startButton;
    //now in the constructer.............
    public Swing(){
    //I used gridbaglayout and wrote the code for the GUI to appear....
    startButton = new JButton("Start Downloading");
        startButton.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            try{
                 actionSearch();   //actionSearch will contain all the code and the function calls of my application...........
            }catch(Exception e1){
                 System.out.println(e1);
        constraints = new GridBagConstraints();
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.insets = new Insets(5, 5, 5, 5);
        layout.setConstraints(startButton, constraints);
        searchPanel.add(startButton);
    //update is a function which initiates a thread which updates the GUI. this function will be called to pass the required variables in the application
    public void update(final int count_hits, final int counter_image_download1, final int didnot_download1) throws Exception{
         Thread thread = new Thread(new Runnable() {
             public void run() {
                  System.out.println("entered into thread");
                  System.out.println("the variable that has to be set is " + count_hits);
                  server_hits_count.repaint(count_hits);
                  server_hits_count.setText( " "+ Integer.toString(count_hits));
                  imagesDownloaded2.setText(" " + Integer.toString(counter_image_download1));
                  imagesDidnotDownload2.setText(" " + Integer.toString(didnot_download1));
                  repaint();
         //this.update(count_hits);
         thread.start();
    //Now in main............................
    public static void main(String[] args){
    Swing s = new Swing();
    s.setVisible(true);
    }//end of main
    }//end of class SwingAbove I have given the skeleton code of my application........ Please tell me how to update the GUI syncronously...
    Please its a bit urgent...............
    Thank you very much in advance
    chaitanya

    First off, note that this question should have been posted in the Swing section.
    GUI events run in a separate thread (the AWT / Event Dispatch Thread) than your program.
    You should be invoking AWT/Swing events via SwingUtilities.invokeLater().
    If for whatever reason you want to have the program thread wait for the event to process
    you can use invokeAndWait().
    http://java.sun.com/javase/6/docs/api/javax/swing/SwingUtilities.html

  • Problem with "find" mode in adf/swing application

    Hi all,
    I'm working on ADF Swing application which uses MS SQL Server 2005 (JDeveloper 10g 10.1.3)
    I think that my issue might be well-known…sorry if it has been already discussed somewhere else…
    I have a problem with the “find” mode for a detail panel in a master-detail form…(To make it clear the “find” mode is switched on when clicking on the special button on a navigation panel).
    So this mode works well in a master panel, but it demonstrates strange behavior on a detail panel, i.e. it takes me two attempts to find the necessary child object and it doesn’t switch back in a simple way from this mode to the normal mode….say if we are in the department 10 (Dept is a master form) we can’t simply find KING employee (Emp is a detail form)…is there any workaround for this?
    Thanks in advance. Alex.

    Hi Frank, please look this issue

  • Problem in Opening HTML Page in Internet Explorer from my Swing Application

    Hi,
    I am opening a HTML file in Internet Explorer from my swing application.I am using the code given below
    private final static String WIN_FLAG = "url.dll,FileProtocolHandler";
    private final static String WIN_PATH = "rundll32";
    String cmd = WIN_PATH + " " + WIN_FLAG + " " + url;
    // url is HTML file Path
    Process p = Runtime.getRuntime().exec( cmd );
    Here there are two things i need to address ...
    1)The HTML file is opening up,but it always opens behind the swing application,that makes me every time to maximize the HTML file after it being opened up.I want to open it in front of the Swing Application.I need to implement "Always On Top" functionality for the html page.
    2)Whenever i trigger action to open different HTML page,it opens in new Internet Explorer window.
    I need to open it in same IE window.
    how to solve out these problems ??? any help would be greatly appreciated .Thanks in advance.
    - Manikandan

    any idea about this ????

Maybe you are looking for