|
What this is
Other links
The source code
/*
* IOProgressMonitor.java - I/O progress monitor
* :tabSize=8:indentSize=8:noTabs=false:
* :folding=explicit:collapseFolds=1:
*
* Copyright (C) 2000, 2002 Slava Pestov
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.gjt.sp.jedit.gui;
//{{{ Imports
import javax.swing.border.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import org.gjt.sp.jedit.io.VFSManager;
import org.gjt.sp.jedit.*;
import org.gjt.sp.util.*;
//}}}
public class IOProgressMonitor extends JPanel
{
//{{{ IOProgressMonitor constructor
public IOProgressMonitor()
{
super(new BorderLayout());
caption = new JLabel();
updateCaption();
add(BorderLayout.NORTH,caption);
threads = new ThreadProgress[VFSManager.getIOThreadPool()
.getThreadCount()];
Box box = new Box(BoxLayout.Y_AXIS);
for(int i = 0; i < threads.length; i++)
{
if(i != 0)
box.add(Box.createVerticalStrut(6));
threads[i] = new ThreadProgress(i);
box.add(threads[i]);
}
JPanel threadPanel = new JPanel(new BorderLayout());
threadPanel.setBorder(new EmptyBorder(6,6,6,6));
threadPanel.add(BorderLayout.NORTH,box);
add(BorderLayout.CENTER,new JScrollPane(threadPanel));
workThreadHandler = new WorkThreadHandler();
} //}}}
//{{{ addNotify() method
public void addNotify()
{
VFSManager.getIOThreadPool().addProgressListener(workThreadHandler);
super.addNotify();
} //}}}
//{{{ removeNotify() method
public void removeNotify()
{
VFSManager.getIOThreadPool().removeProgressListener(workThreadHandler);
super.removeNotify();
} //}}}
//{{{ Private members
//{{{ Instance variables
private JLabel caption;
private ThreadProgress[] threads;
private WorkThreadHandler workThreadHandler;
//}}}
//{{{ updateCaption() method
private void updateCaption()
{
String[] args = { String.valueOf(VFSManager.getIOThreadPool()
.getRequestCount()) };
caption.setText(jEdit.getProperty("io-progress-monitor.caption",args));
} //}}}
//}}}
//{{{ WorkThreadHandler class
class WorkThreadHandler implements WorkThreadProgressListener
{
public void statusUpdate(final WorkThreadPool pool, final int index)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
updateCaption();
threads[index].update();
}
});
}
public void progressUpdate(final WorkThreadPool pool, final int index)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
updateCaption();
threads[index].update();
}
});
}
} //}}}
//{{{ ThreadProgress class
class ThreadProgress extends JPanel
{
//{{{ ThreadProgress constructor
public ThreadProgress(int index)
{
super(new BorderLayout(12,12));
this.index = index;
Box box = new Box(BoxLayout.Y_AXIS);
box.add(Box.createGlue());
box.add(progress = new JProgressBar());
progress.setStringPainted(true);
box.add(Box.createGlue());
ThreadProgress.this.add(BorderLayout.CENTER,box);
abort = new JButton(jEdit.getProperty("io-progress-monitor.abort"));
abort.addActionListener(new ActionHandler());
ThreadProgress.this.add(BorderLayout.EAST,abort);
update();
} //}}}
//{{{ update() method
public void update()
{
WorkThread thread = VFSManager.getIOThreadPool().getThread(index);
if(thread.isRequestRunning())
{
abort.setEnabled(true);
String status = thread.getStatus();
if(status == null)
status = "";
progress.setString(status);
progress.setMaximum(thread.getProgressMaximum());
//System.err.println("value: " + thread.getProgressValue());
progress.setValue(thread.getProgressValue());
}
else
{
abort.setEnabled(false);
progress.setString(jEdit.getProperty("io-progress-monitor"
+ ".idle"));
progress.setValue(0);
}
} //}}}
//{{{ Private members
private int index;
private JProgressBar progress;
private JButton abort;
//}}}
//{{{ ActionHandler class
class ActionHandler implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == abort)
{
int result = GUIUtilities.confirm(
IOProgressMonitor.this,"abort",null,
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(result == JOptionPane.YES_OPTION)
{
VFSManager.getIOThreadPool().getThread(index)
.abortCurrentRequest();
}
}
}
} //}}}
} //}}}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.