<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSwing_Components%2FChart</id>
		<title>Java/Swing Components/Chart - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSwing_Components%2FChart"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_Components/Chart&amp;action=history"/>
		<updated>2026-04-24T01:25:05Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Swing_Components/Chart&amp;diff=8243&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_Components/Chart&amp;diff=8243&amp;oldid=prev"/>
				<updated>2010-06-01T06:57:16Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:57, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Swing_Components/Chart&amp;diff=8242&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_Components/Chart&amp;diff=8242&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Chart Bean 2 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The various table charting classes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Java Swing, 2nd Edition&lt;br /&gt;
By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole&lt;br /&gt;
ISBN: 0-596-00408-7&lt;br /&gt;
Publisher: O&amp;quot;Reilly &lt;br /&gt;
*/&lt;br /&gt;
// ChartTester.java&lt;br /&gt;
//A test harness for the various table charting classes. (see&lt;br /&gt;
//ChartPainter.java, PieChartPainter.java, TableChart.java and&lt;br /&gt;
//TableChartPopup.java)&lt;br /&gt;
//&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.MouseEvent;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTable;&lt;br /&gt;
import javax.swing.SwingUtilities;&lt;br /&gt;
import javax.swing.ToolTipManager;&lt;br /&gt;
import javax.swing.event.TableModelEvent;&lt;br /&gt;
import javax.swing.event.TableModelListener;&lt;br /&gt;
import javax.swing.plaf.ruponentUI;&lt;br /&gt;
import javax.swing.table.AbstractTableModel;&lt;br /&gt;
import javax.swing.table.TableModel;&lt;br /&gt;
public class ChartTester extends JFrame {&lt;br /&gt;
  public ChartTester() {&lt;br /&gt;
    super(&amp;quot;Simple JTable Test&amp;quot;);&lt;br /&gt;
    setSize(300, 200);&lt;br /&gt;
    setDefaultCloseOperation(EXIT_ON_CLOSE);&lt;br /&gt;
    TableModel tm = new AbstractTableModel() {&lt;br /&gt;
      String data[][] = { { &amp;quot;Ron&amp;quot;, &amp;quot;0.00&amp;quot;, &amp;quot;68.68&amp;quot;, &amp;quot;77.34&amp;quot;, &amp;quot;78.02&amp;quot; },&lt;br /&gt;
          { &amp;quot;Ravi&amp;quot;, &amp;quot;0.00&amp;quot;, &amp;quot;70.89&amp;quot;, &amp;quot;64.17&amp;quot;, &amp;quot;75.00&amp;quot; },&lt;br /&gt;
          { &amp;quot;Maria&amp;quot;, &amp;quot;76.52&amp;quot;, &amp;quot;71.12&amp;quot;, &amp;quot;75.68&amp;quot;, &amp;quot;74.14&amp;quot; },&lt;br /&gt;
          { &amp;quot;James&amp;quot;, &amp;quot;70.00&amp;quot;, &amp;quot;15.72&amp;quot;, &amp;quot;26.40&amp;quot;, &amp;quot;38.32&amp;quot; },&lt;br /&gt;
          { &amp;quot;Ellen&amp;quot;, &amp;quot;80.32&amp;quot;, &amp;quot;78.16&amp;quot;, &amp;quot;83.80&amp;quot;, &amp;quot;85.72&amp;quot; } };&lt;br /&gt;
      String headers[] = { &amp;quot;&amp;quot;, &amp;quot;Q1&amp;quot;, &amp;quot;Q2&amp;quot;, &amp;quot;Q3&amp;quot;, &amp;quot;Q4&amp;quot; };&lt;br /&gt;
      public int getColumnCount() {&lt;br /&gt;
        return headers.length;&lt;br /&gt;
      }&lt;br /&gt;
      public int getRowCount() {&lt;br /&gt;
        return data.length;&lt;br /&gt;
      }&lt;br /&gt;
      public String getColumnName(int col) {&lt;br /&gt;
        return headers[col];&lt;br /&gt;
      }&lt;br /&gt;
      public Class getColumnClass(int col) {&lt;br /&gt;
        return (col == 0) ? String.class : Number.class;&lt;br /&gt;
      }&lt;br /&gt;
      public boolean isCellEditable(int row, int col) {&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
      public Object getValueAt(int row, int col) {&lt;br /&gt;
        return data[row][col];&lt;br /&gt;
      }&lt;br /&gt;
      public void setValueAt(Object value, int row, int col) {&lt;br /&gt;
        data[row][col] = (String) value;&lt;br /&gt;
        fireTableRowsUpdated(row, row);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    JTable jt = new JTable(tm);&lt;br /&gt;
    JScrollPane jsp = new JScrollPane(jt);&lt;br /&gt;
    getContentPane().add(jsp, BorderLayout.CENTER);&lt;br /&gt;
    final TableChartPopup tcp = new TableChartPopup(tm);&lt;br /&gt;
    JButton button = new JButton(&amp;quot;Show me a chart of this table&amp;quot;);&lt;br /&gt;
    button.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent ae) {&lt;br /&gt;
        tcp.setVisible(true);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    getContentPane().add(button, BorderLayout.SOUTH);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    ChartTester ct = new ChartTester();&lt;br /&gt;
    ct.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
//TableChartPopup.java&lt;br /&gt;
//A popup framework for showing a chart of table data. This class also&lt;br /&gt;
//turns on tooltips for the chart.&lt;br /&gt;
//&lt;br /&gt;
class TableChartPopup extends JFrame {&lt;br /&gt;
  public TableChartPopup(TableModel tm) {&lt;br /&gt;
    super(&amp;quot;Table Chart&amp;quot;);&lt;br /&gt;
    setSize(300, 200);&lt;br /&gt;
    TableChart tc = new TableChart(tm);&lt;br /&gt;
    getContentPane().add(tc, BorderLayout.CENTER);&lt;br /&gt;
    // Use the next line to turn on tooltips:&lt;br /&gt;
    ToolTipManager.sharedInstance().registerComponent(tc);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
//TableChart.java&lt;br /&gt;
//A chart-generating class that uses the TableModel interface to get&lt;br /&gt;
//its data.&lt;br /&gt;
//&lt;br /&gt;
class TableChart extends JComponent implements TableModelListener {&lt;br /&gt;
  protected TableModel model;&lt;br /&gt;
  protected ChartPainter cp;&lt;br /&gt;
  protected double[] percentages; // pie slices&lt;br /&gt;
  protected String[] labels; // labels for slices&lt;br /&gt;
  protected String[] tips; // tooltips for slices&lt;br /&gt;
  protected java.text.NumberFormat formatter = java.text.NumberFormat&lt;br /&gt;
      .getPercentInstance();&lt;br /&gt;
  public TableChart(TableModel tm) {&lt;br /&gt;
    setUI(cp = new PieChartPainter());&lt;br /&gt;
    setModel(tm);&lt;br /&gt;
  }&lt;br /&gt;
  public void setTextFont(Font f) {&lt;br /&gt;
    cp.setTextFont(f);&lt;br /&gt;
  }&lt;br /&gt;
  public Font getTextFont() {&lt;br /&gt;
    return cp.getTextFont();&lt;br /&gt;
  }&lt;br /&gt;
  public void setTextColor(Color c) {&lt;br /&gt;
    cp.setTextColor(c);&lt;br /&gt;
  }&lt;br /&gt;
  public Color getTextColor() {&lt;br /&gt;
    return cp.getTextColor();&lt;br /&gt;
  }&lt;br /&gt;
  public void setColor(Color[] clist) {&lt;br /&gt;
    cp.setColor(clist);&lt;br /&gt;
  }&lt;br /&gt;
  public Color[] getColor() {&lt;br /&gt;
    return cp.getColor();&lt;br /&gt;
  }&lt;br /&gt;
  public void setColor(int index, Color c) {&lt;br /&gt;
    cp.setColor(index, c);&lt;br /&gt;
  }&lt;br /&gt;
  public Color getColor(int index) {&lt;br /&gt;
    return cp.getColor(index);&lt;br /&gt;
  }&lt;br /&gt;
  public String getToolTipText(MouseEvent me) {&lt;br /&gt;
    if (tips != null) {&lt;br /&gt;
      int whichTip = cp.indexOfEntryAt(me);&lt;br /&gt;
      if (whichTip != -1) {&lt;br /&gt;
        return tips[whichTip];&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    return null;&lt;br /&gt;
  }&lt;br /&gt;
  public void tableChanged(TableModelEvent tme) {&lt;br /&gt;
    // Rebuild the arrays only if the structure changed.&lt;br /&gt;
    updateLocalValues(tme.getType() != TableModelEvent.UPDATE);&lt;br /&gt;
  }&lt;br /&gt;
  public void setModel(TableModel tm) {&lt;br /&gt;
    // get listener code correct.&lt;br /&gt;
    if (tm != model) {&lt;br /&gt;
      if (model != null) {&lt;br /&gt;
        model.removeTableModelListener(this);&lt;br /&gt;
      }&lt;br /&gt;
      model = tm;&lt;br /&gt;
      model.addTableModelListener(this);&lt;br /&gt;
      updateLocalValues(true);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public TableModel getModel() {&lt;br /&gt;
    return model;&lt;br /&gt;
  }&lt;br /&gt;
  // Run through the model and count every cell (except the very first column,&lt;br /&gt;
  // which we assume is the slice label column).&lt;br /&gt;
  protected void calculatePercentages() {&lt;br /&gt;
    double runningTotal = 0.0;&lt;br /&gt;
    for (int i = model.getRowCount() - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
      percentages[i] = 0.0;&lt;br /&gt;
      for (int j = model.getColumnCount() - 1; j &amp;gt;= 0; j--) {&lt;br /&gt;
        // First try the cell as a Number object.&lt;br /&gt;
        Object val = model.getValueAt(i, j);&lt;br /&gt;
        if (val instanceof Number) {&lt;br /&gt;
          percentages[i] += ((Number) val).doubleValue();&lt;br /&gt;
        } else if (val instanceof String) {&lt;br /&gt;
          // oops, it wasn&amp;quot;t numeric...&lt;br /&gt;
          // Ok, so try it as a string&lt;br /&gt;
          try {&lt;br /&gt;
            percentages[i] += Double.valueOf(val.toString())&lt;br /&gt;
                .doubleValue();&lt;br /&gt;
          } catch (Exception e) {&lt;br /&gt;
            // not a numeric string...give up.&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      runningTotal += percentages[i];&lt;br /&gt;
    }&lt;br /&gt;
    // Make each entry a percentage of the total.&lt;br /&gt;
    for (int i = model.getRowCount() - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
      percentages[i] /= runningTotal;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // This method just takes the percentages and formats them for use as&lt;br /&gt;
  // tooltips.&lt;br /&gt;
  protected void createLabelsAndTips() {&lt;br /&gt;
    for (int i = model.getRowCount() - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
      labels[i] = (String) model.getValueAt(i, 0);&lt;br /&gt;
      tips[i] = formatter.format(percentages[i]);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // Call this method to update the chart. We try to be a bit efficient here&lt;br /&gt;
  // in that we allocate new storage arrays only if the new table has a&lt;br /&gt;
  // different number of rows.&lt;br /&gt;
  protected void updateLocalValues(boolean freshStart) {&lt;br /&gt;
    if (freshStart) {&lt;br /&gt;
      int count = model.getRowCount();&lt;br /&gt;
      if ((tips == null) || (count != tips.length)) {&lt;br /&gt;
        percentages = new double[count];&lt;br /&gt;
        labels = new String[count];&lt;br /&gt;
        tips = new String[count];&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    calculatePercentages();&lt;br /&gt;
    createLabelsAndTips();&lt;br /&gt;
    // Now that everything&amp;quot;s up-to-date, reset the chart painter with the&lt;br /&gt;
    // new&lt;br /&gt;
    // values.&lt;br /&gt;
    cp.setValues(percentages);&lt;br /&gt;
    cp.setLabels(labels);&lt;br /&gt;
    // Finally, repaint the chart.&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
//PieChartPainter.java&lt;br /&gt;
//A pie chart implementation of the ChartPainter class.&lt;br /&gt;
//&lt;br /&gt;
class PieChartPainter extends ChartPainter {&lt;br /&gt;
  protected static PieChartPainter chartUI = new PieChartPainter();&lt;br /&gt;
  protected int originX, originY;&lt;br /&gt;
  protected int radius;&lt;br /&gt;
  private static double piby2 = Math.PI / 2.0;&lt;br /&gt;
  private static double twopi = Math.PI * 2.0;&lt;br /&gt;
  private static double d2r = Math.PI / 180.0; // Degrees to radians.&lt;br /&gt;
  private static int xGap = 5;&lt;br /&gt;
  private static int inset = 40;&lt;br /&gt;
  public int indexOfEntryAt(MouseEvent me) {&lt;br /&gt;
    int x = me.getX() - originX;&lt;br /&gt;
    int y = originY - me.getY(); // Upside-down coordinate system.&lt;br /&gt;
    // Is (x,y) in the circle?&lt;br /&gt;
    if (Math.sqrt(x * x + y * y) &amp;gt; radius) {&lt;br /&gt;
      return -1;&lt;br /&gt;
    }&lt;br /&gt;
    double percent = Math.atan2(Math.abs(y), Math.abs(x));&lt;br /&gt;
    if (x &amp;gt;= 0) {&lt;br /&gt;
      if (y &amp;lt;= 0) { // (IV)&lt;br /&gt;
        percent = (piby2 - percent) + 3 * piby2; // (IV)&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      if (y &amp;gt;= 0) { // (II)&lt;br /&gt;
        percent = Math.PI - percent;&lt;br /&gt;
      } else { // (III)&lt;br /&gt;
        percent = Math.PI + percent;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    percent /= twopi;&lt;br /&gt;
    double t = 0.0;&lt;br /&gt;
    if (values != null) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; values.length; i++) {&lt;br /&gt;
        if (t + values[i] &amp;gt; percent) {&lt;br /&gt;
          return i;&lt;br /&gt;
        }&lt;br /&gt;
        t += values[i];&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    return -1;&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g, JComponent c) {&lt;br /&gt;
    Dimension size = c.getSize();&lt;br /&gt;
    originX = size.width / 2;&lt;br /&gt;
    originY = size.height / 2;&lt;br /&gt;
    int diameter = (originX &amp;lt; originY ? size.width - inset : size.height&lt;br /&gt;
        - inset);&lt;br /&gt;
    radius = (diameter / 2) + 1;&lt;br /&gt;
    int cornerX = (originX - (diameter / 2));&lt;br /&gt;
    int cornerY = (originY - (diameter / 2));&lt;br /&gt;
    int startAngle = 0;&lt;br /&gt;
    int arcAngle = 0;&lt;br /&gt;
    for (int i = 0; i &amp;lt; values.length; i++) {&lt;br /&gt;
      arcAngle = (int) (i &amp;lt; values.length - 1 ? Math&lt;br /&gt;
          .round(values[i] * 360) : 360 - startAngle);&lt;br /&gt;
      g.setColor(colors[i % colors.length]);&lt;br /&gt;
      g.fillArc(cornerX, cornerY, diameter, diameter, startAngle,&lt;br /&gt;
          arcAngle);&lt;br /&gt;
      drawLabel(g, labels[i], startAngle + (arcAngle / 2));&lt;br /&gt;
      startAngle += arcAngle;&lt;br /&gt;
    }&lt;br /&gt;
    g.setColor(Color.black);&lt;br /&gt;
    g.drawOval(cornerX, cornerY, diameter, diameter); // Cap the circle.&lt;br /&gt;
  }&lt;br /&gt;
  public void drawLabel(Graphics g, String text, double angle) {&lt;br /&gt;
    g.setFont(textFont);&lt;br /&gt;
    g.setColor(textColor);&lt;br /&gt;
    double radians = angle * d2r;&lt;br /&gt;
    int x = (int) ((radius + xGap) * Math.cos(radians));&lt;br /&gt;
    int y = (int) ((radius + xGap) * Math.sin(radians));&lt;br /&gt;
    if (x &amp;lt; 0) {&lt;br /&gt;
      x -= SwingUtilities.ruputeStringWidth(g.getFontMetrics(), text);&lt;br /&gt;
    }&lt;br /&gt;
    if (y &amp;lt; 0) {&lt;br /&gt;
      y -= g.getFontMetrics().getHeight();&lt;br /&gt;
    }&lt;br /&gt;
    g.drawString(text, x + originX, originY - y);&lt;br /&gt;
  }&lt;br /&gt;
  public static ComponentUI createUI(JComponent c) {&lt;br /&gt;
    return chartUI;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
//ChartPainter.java&lt;br /&gt;
//A simple chart-drawing UI base class. This class tracks the basic fonts&lt;br /&gt;
//and colors for various types of charts including pie and bar. The paint()&lt;br /&gt;
//method is abstract and must be implemented by subclasses for each type.&lt;br /&gt;
//&lt;br /&gt;
abstract class ChartPainter extends ComponentUI {&lt;br /&gt;
  protected Font textFont = new Font(&amp;quot;Serif&amp;quot;, Font.PLAIN, 12);&lt;br /&gt;
  protected Color textColor = Color.black;&lt;br /&gt;
  protected Color colors[] = new Color[] { Color.red, Color.blue,&lt;br /&gt;
      Color.yellow, Color.black, Color.green, Color.white, Color.gray,&lt;br /&gt;
      Color.cyan, Color.magenta, Color.darkGray };&lt;br /&gt;
  protected double values[] = new double[0];&lt;br /&gt;
  protected String labels[] = new String[0];&lt;br /&gt;
  public void setTextFont(Font f) {&lt;br /&gt;
    textFont = f;&lt;br /&gt;
  }&lt;br /&gt;
  public Font getTextFont() {&lt;br /&gt;
    return textFont;&lt;br /&gt;
  }&lt;br /&gt;
  public void setColor(Color[] clist) {&lt;br /&gt;
    colors = clist;&lt;br /&gt;
  }&lt;br /&gt;
  public Color[] getColor() {&lt;br /&gt;
    return colors;&lt;br /&gt;
  }&lt;br /&gt;
  public void setColor(int index, Color c) {&lt;br /&gt;
    colors[index] = c;&lt;br /&gt;
  }&lt;br /&gt;
  public Color getColor(int index) {&lt;br /&gt;
    return colors[index];&lt;br /&gt;
  }&lt;br /&gt;
  public void setTextColor(Color c) {&lt;br /&gt;
    textColor = c;&lt;br /&gt;
  }&lt;br /&gt;
  public Color getTextColor() {&lt;br /&gt;
    return textColor;&lt;br /&gt;
  }&lt;br /&gt;
  public void setLabels(String[] l) {&lt;br /&gt;
    labels = l;&lt;br /&gt;
  }&lt;br /&gt;
  public void setValues(double[] v) {&lt;br /&gt;
    values = v;&lt;br /&gt;
  }&lt;br /&gt;
  public abstract int indexOfEntryAt(MouseEvent me);&lt;br /&gt;
  public abstract void paint(Graphics g, JComponent c);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>