<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Forg.eclipse.jface.viewers%2FViewerSorter</id>
		<title>Java by API/org.eclipse.jface.viewers/ViewerSorter - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Forg.eclipse.jface.viewers%2FViewerSorter"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_by_API/org.eclipse.jface.viewers/ViewerSorter&amp;action=history"/>
		<updated>2026-04-23T21:12:13Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_by_API/org.eclipse.jface.viewers/ViewerSorter&amp;diff=1045&amp;oldid=prev</id>
		<title> в 17:43, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_by_API/org.eclipse.jface.viewers/ViewerSorter&amp;diff=1045&amp;oldid=prev"/>
				<updated>2010-05-31T17:43:48Z</updated>
		
		<summary type="html">&lt;p&gt;&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;Версия 17:43, 31 мая 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>
			</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_by_API/org.eclipse.jface.viewers/ViewerSorter&amp;diff=1046&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_by_API/org.eclipse.jface.viewers/ViewerSorter&amp;diff=1046&amp;oldid=prev"/>
				<updated>2010-05-31T14:23:18Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== extends ViewerSorter (Sortable) ==&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;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileNotFoundException;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import org.eclipse.jface.viewers.ILabelProviderListener;&lt;br /&gt;
import org.eclipse.jface.viewers.IStructuredContentProvider;&lt;br /&gt;
import org.eclipse.jface.viewers.ITableLabelProvider;&lt;br /&gt;
import org.eclipse.jface.viewers.TableViewer;&lt;br /&gt;
import org.eclipse.jface.viewers.Viewer;&lt;br /&gt;
import org.eclipse.jface.viewers.ViewerSorter;&lt;br /&gt;
import org.eclipse.jface.window.ApplicationWindow;&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.events.SelectionAdapter;&lt;br /&gt;
import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;
import org.eclipse.swt.graphics.Image;&lt;br /&gt;
import org.eclipse.swt.layout.GridData;&lt;br /&gt;
import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;
import org.eclipse.swt.widgets.rubo;&lt;br /&gt;
import org.eclipse.swt.widgets.ruposite;&lt;br /&gt;
import org.eclipse.swt.widgets.Control;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
import org.eclipse.swt.widgets.Table;&lt;br /&gt;
import org.eclipse.swt.widgets.TableColumn;&lt;br /&gt;
public class MainClass extends ApplicationWindow {&lt;br /&gt;
  private StudentTableModel model = new StudentTableModel();&lt;br /&gt;
  private TableViewer tv;&lt;br /&gt;
  public MainClass() {&lt;br /&gt;
    super(null);&lt;br /&gt;
    setBlockOnOpen(true);&lt;br /&gt;
    open();&lt;br /&gt;
    Display.getCurrent().dispose();&lt;br /&gt;
  }&lt;br /&gt;
  protected void configureShell(Shell shell) {&lt;br /&gt;
    super.configureShell(shell);&lt;br /&gt;
    shell.setSize(400, 400);&lt;br /&gt;
  }&lt;br /&gt;
  protected Control createContents(Composite parent) {&lt;br /&gt;
    Composite composite = new Composite(parent, SWT.NONE);&lt;br /&gt;
    composite.setLayout(new GridLayout(1, false));&lt;br /&gt;
    Combo combo = new Combo(composite, SWT.READ_ONLY);&lt;br /&gt;
    combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;
    tv = new TableViewer(composite);&lt;br /&gt;
    tv.setContentProvider(new PlayerContentProvider());&lt;br /&gt;
    tv.setLabelProvider(new PlayerLabelProvider());&lt;br /&gt;
    tv.setSorter(new StudentViewerSorter());&lt;br /&gt;
    Table table = tv.getTable();&lt;br /&gt;
    table.setLayoutData(new GridData(GridData.FILL_BOTH));&lt;br /&gt;
    TableColumn tc = new TableColumn(table, SWT.LEFT);&lt;br /&gt;
    tc.setText(&amp;quot;First Name&amp;quot;);&lt;br /&gt;
    tc.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent event) {&lt;br /&gt;
        ((StudentViewerSorter) tv.getSorter()).doSort(Const.COLUMN_FIRST_NAME);&lt;br /&gt;
        tv.refresh();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    tc = new TableColumn(table, SWT.LEFT);&lt;br /&gt;
    tc.setText(&amp;quot;Last Name&amp;quot;);&lt;br /&gt;
    tc.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent event) {&lt;br /&gt;
        ((StudentViewerSorter) tv.getSorter()).doSort(Const.COLUMN_LAST_NAME);&lt;br /&gt;
        tv.refresh();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    tc = new TableColumn(table, SWT.RIGHT);&lt;br /&gt;
    tc.setText(&amp;quot;Math&amp;quot;);&lt;br /&gt;
    tc.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent event) {&lt;br /&gt;
        ((StudentViewerSorter) tv.getSorter()).doSort(Const.COLUMN_MATH);&lt;br /&gt;
        tv.refresh();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    tc = new TableColumn(table, SWT.RIGHT);&lt;br /&gt;
    tc.setText(&amp;quot;CHEM&amp;quot;);&lt;br /&gt;
    tc.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent event) {&lt;br /&gt;
        ((StudentViewerSorter) tv.getSorter()).doSort(Const.COLUMN_CHEM);&lt;br /&gt;
        tv.refresh();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    tc = new TableColumn(table, SWT.RIGHT);&lt;br /&gt;
    tc.setText(&amp;quot;AVE&amp;quot;);&lt;br /&gt;
    tc.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent event) {&lt;br /&gt;
        ((StudentViewerSorter) tv.getSorter()).doSort(Const.COLUMN_AVE);&lt;br /&gt;
        tv.refresh();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    for (int i = 0, n = model.teams.length; i &amp;lt; n; i++) {&lt;br /&gt;
      combo.add(model.teams[i].getName());&lt;br /&gt;
    }&lt;br /&gt;
    combo.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent event) {&lt;br /&gt;
        update(model.teams[((Combo) event.widget).getSelectionIndex()]);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    combo.select(0);&lt;br /&gt;
    update(model.teams[0]);&lt;br /&gt;
    for (int i = 0, n = table.getColumnCount(); i &amp;lt; n; i++) {&lt;br /&gt;
      table.getColumn(i).pack();&lt;br /&gt;
    }&lt;br /&gt;
    table.setHeaderVisible(true);&lt;br /&gt;
    table.setLinesVisible(true);&lt;br /&gt;
    return composite;&lt;br /&gt;
  }&lt;br /&gt;
  private void update(HighSchool team) {&lt;br /&gt;
    getShell().setText(team.getYear() + &amp;quot; &amp;quot; + team.getName());&lt;br /&gt;
    tv.setInput(team);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new MainClass();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class StudentTableModel {&lt;br /&gt;
  public HighSchool[] teams;&lt;br /&gt;
&lt;br /&gt;
  public StudentTableModel() {&lt;br /&gt;
    teams = new HighSchool[3];&lt;br /&gt;
    teams[0] = new HighSchool(&amp;quot;school 1&amp;quot;, &amp;quot;1985-86&amp;quot;);&lt;br /&gt;
    teams[0].add(new Student(&amp;quot;A&amp;quot;, &amp;quot;a&amp;quot;, 25.8f, 9.8f, 6.8f));&lt;br /&gt;
    teams[0].add(new Student(&amp;quot;B&amp;quot;, &amp;quot;b&amp;quot;, 21.3f, 8.1f, 2.7f));&lt;br /&gt;
    teams[0].add(new Student(&amp;quot;C&amp;quot;, &amp;quot;c&amp;quot;, 16.1f, 9.5f, 1.8f));&lt;br /&gt;
    teams[1] = new HighSchool(&amp;quot;school 2&amp;quot;, &amp;quot;1995-96&amp;quot;);&lt;br /&gt;
    teams[1].add(new Student(&amp;quot;Michael&amp;quot;, &amp;quot;Jordan&amp;quot;, 30.4f, 6.6f, 4.3f));&lt;br /&gt;
    teams[1].add(new Student(&amp;quot;Scottie&amp;quot;, &amp;quot;Pippen&amp;quot;, 19.4f, 6.4f, 5.9f));&lt;br /&gt;
    teams[1].add(new Student(&amp;quot;Toni&amp;quot;, &amp;quot;Kukoc&amp;quot;, 13.1f, 4.0f, 3.5f));&lt;br /&gt;
    teams[2] = new HighSchool(&amp;quot;scholl 3&amp;quot;, &amp;quot;1987-1988&amp;quot;);&lt;br /&gt;
    teams[2].add(new Student(&amp;quot;Magic&amp;quot;, &amp;quot;Johnson&amp;quot;, 23.9f, 6.3f, 12.2f));&lt;br /&gt;
    teams[2].add(new Student(&amp;quot;James&amp;quot;, &amp;quot;Worthy&amp;quot;, 19.4f, 5.7f, 2.8f));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class PlayerLabelProvider implements ITableLabelProvider {&lt;br /&gt;
  private Image ball;&lt;br /&gt;
  public PlayerLabelProvider() {&lt;br /&gt;
    try {&lt;br /&gt;
      ball = new Image(null, new FileInputStream(&amp;quot;images/ball.png&amp;quot;));&lt;br /&gt;
    } catch (FileNotFoundException e) {&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public Image getColumnImage(Object arg0, int arg1) {&lt;br /&gt;
    Student player = (Student) arg0;&lt;br /&gt;
    Image image = null;&lt;br /&gt;
    switch (arg1) {&lt;br /&gt;
    case Const.COLUMN_MATH:&lt;br /&gt;
    case Const.COLUMN_CHEM:&lt;br /&gt;
    case Const.COLUMN_AVE:&lt;br /&gt;
      if (player.ledTeam(arg1))&lt;br /&gt;
        image = ball;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return image;&lt;br /&gt;
  }&lt;br /&gt;
  public String getColumnText(Object arg0, int arg1) {&lt;br /&gt;
    Student player = (Student) arg0;&lt;br /&gt;
    String text = &amp;quot;&amp;quot;;&lt;br /&gt;
    switch (arg1) {&lt;br /&gt;
    case Const.COLUMN_FIRST_NAME:&lt;br /&gt;
      text = player.getFirstName();&lt;br /&gt;
      break;&lt;br /&gt;
    case Const.COLUMN_LAST_NAME:&lt;br /&gt;
      text = player.getLastName();&lt;br /&gt;
      break;&lt;br /&gt;
    case Const.COLUMN_MATH:&lt;br /&gt;
      text = String.valueOf(player.getMath());&lt;br /&gt;
      break;&lt;br /&gt;
    case Const.COLUMN_CHEM:&lt;br /&gt;
      text = String.valueOf(player.getChem());&lt;br /&gt;
      break;&lt;br /&gt;
    case Const.COLUMN_AVE:&lt;br /&gt;
      text = String.valueOf(player.getAve());&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return text;&lt;br /&gt;
  }&lt;br /&gt;
  public void addListener(ILabelProviderListener arg0) {&lt;br /&gt;
  }&lt;br /&gt;
  public void dispose() {&lt;br /&gt;
    if (ball != null)&lt;br /&gt;
      ball.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isLabelProperty(Object arg0, String arg1) {&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
  public void removeListener(ILabelProviderListener arg0) {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class PlayerContentProvider implements IStructuredContentProvider {&lt;br /&gt;
  public Object[] getElements(Object arg0) {&lt;br /&gt;
    return ((HighSchool) arg0).getPlayers().toArray();&lt;br /&gt;
  }&lt;br /&gt;
  public void dispose() {&lt;br /&gt;
  }&lt;br /&gt;
  public void inputChanged(Viewer arg0, Object arg1, Object arg2) {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Const {&lt;br /&gt;
  public static final int COLUMN_FIRST_NAME = 0;&lt;br /&gt;
  public static final int COLUMN_LAST_NAME = 1;&lt;br /&gt;
  public static final int COLUMN_MATH = 2;&lt;br /&gt;
  public static final int COLUMN_CHEM = 3;&lt;br /&gt;
  public static final int COLUMN_AVE = 4;&lt;br /&gt;
}&lt;br /&gt;
class HighSchool {&lt;br /&gt;
  private String name;&lt;br /&gt;
  private String year;&lt;br /&gt;
  private List players;&lt;br /&gt;
  public HighSchool(String name, String year) {&lt;br /&gt;
    this.name = name;&lt;br /&gt;
    this.year = year;&lt;br /&gt;
    players = new LinkedList();&lt;br /&gt;
  }&lt;br /&gt;
  public String getName() {&lt;br /&gt;
    return name;&lt;br /&gt;
  }&lt;br /&gt;
  public String getYear() {&lt;br /&gt;
    return year;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean add(Student player) {&lt;br /&gt;
    boolean added = players.add(player);&lt;br /&gt;
    if (added)&lt;br /&gt;
      player.setSchool(this);&lt;br /&gt;
    return added;&lt;br /&gt;
  }&lt;br /&gt;
  public List getPlayers() {&lt;br /&gt;
    return Collections.unmodifiableList(players);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean led(Student player, int column) {&lt;br /&gt;
    boolean led = true;&lt;br /&gt;
    for (int i = 0, n = players.size(); i &amp;lt; n &amp;amp;&amp;amp; led; i++) {&lt;br /&gt;
      Student test = (Student) players.get(i);&lt;br /&gt;
      if (player == test)&lt;br /&gt;
        continue;&lt;br /&gt;
      switch (column) {&lt;br /&gt;
      case Const.COLUMN_MATH:&lt;br /&gt;
        if (player.getMath() &amp;lt; test.getMath())&lt;br /&gt;
          led = false;&lt;br /&gt;
        break;&lt;br /&gt;
      case Const.COLUMN_CHEM:&lt;br /&gt;
        if (player.getChem() &amp;lt; test.getChem())&lt;br /&gt;
          led = false;&lt;br /&gt;
        break;&lt;br /&gt;
      case Const.COLUMN_AVE:&lt;br /&gt;
        if (player.getAve() &amp;lt; test.getAve())&lt;br /&gt;
          led = false;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    return led;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Student {&lt;br /&gt;
  private HighSchool team;&lt;br /&gt;
  private String lastName;&lt;br /&gt;
  private String firstName;&lt;br /&gt;
  private float math;&lt;br /&gt;
  private float chem;&lt;br /&gt;
  private float ave;&lt;br /&gt;
  public Student() {&lt;br /&gt;
    this(null, null, 0.0f, 0.0f, 0.0f);&lt;br /&gt;
  }&lt;br /&gt;
  public Student(String firstName, String lastName, float m, float c, float a) {&lt;br /&gt;
    setFirstName(firstName);&lt;br /&gt;
    setLastName(lastName);&lt;br /&gt;
    setMath(m);&lt;br /&gt;
    setChem(c);&lt;br /&gt;
    setAve(a);&lt;br /&gt;
  }&lt;br /&gt;
  public void setSchool(HighSchool team) {&lt;br /&gt;
    this.team = team;&lt;br /&gt;
  }&lt;br /&gt;
  public float getAve() {&lt;br /&gt;
    return ave;&lt;br /&gt;
  }&lt;br /&gt;
  public void setAve(float assists) {&lt;br /&gt;
    this.ave = assists;&lt;br /&gt;
  }&lt;br /&gt;
  public String getFirstName() {&lt;br /&gt;
    return firstName;&lt;br /&gt;
  }&lt;br /&gt;
  public void setFirstName(String firstName) {&lt;br /&gt;
    this.firstName = firstName;&lt;br /&gt;
  }&lt;br /&gt;
  public String getLastName() {&lt;br /&gt;
    return lastName;&lt;br /&gt;
  }&lt;br /&gt;
  public void setLastName(String lastName) {&lt;br /&gt;
    this.lastName = lastName;&lt;br /&gt;
  }&lt;br /&gt;
  public float getMath() {&lt;br /&gt;
    return math;&lt;br /&gt;
  }&lt;br /&gt;
  public void setMath(float points) {&lt;br /&gt;
    this.math = points;&lt;br /&gt;
  }&lt;br /&gt;
  public float getChem() {&lt;br /&gt;
    return chem;&lt;br /&gt;
  }&lt;br /&gt;
  public void setChem(float rebounds) {&lt;br /&gt;
    this.chem = rebounds;&lt;br /&gt;
  }&lt;br /&gt;
  public HighSchool getTeam() {&lt;br /&gt;
    return team;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean ledTeam(int column) {&lt;br /&gt;
    return team.led(this, column);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class StudentViewerSorter extends ViewerSorter {&lt;br /&gt;
  private static final int ASCENDING = 0;&lt;br /&gt;
  private static final int DESCENDING = 1;&lt;br /&gt;
  private int column;&lt;br /&gt;
  private int direction;&lt;br /&gt;
  public void doSort(int column) {&lt;br /&gt;
    if (column == this.column) {&lt;br /&gt;
      direction = 1 - direction;&lt;br /&gt;
    } else {&lt;br /&gt;
      this.column = column;&lt;br /&gt;
      direction = ASCENDING;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public int compare(Viewer viewer, Object e1, Object e2) {&lt;br /&gt;
    int rc = 0;&lt;br /&gt;
    Student p1 = (Student) e1;&lt;br /&gt;
    Student p2 = (Student) e2;&lt;br /&gt;
    switch (column) {&lt;br /&gt;
    case Const.COLUMN_FIRST_NAME:&lt;br /&gt;
      rc = collator.rupare(p1.getFirstName(), p2.getFirstName());&lt;br /&gt;
      break;&lt;br /&gt;
    case Const.COLUMN_LAST_NAME:&lt;br /&gt;
      rc = collator.rupare(p1.getLastName(), p2.getLastName());&lt;br /&gt;
      break;&lt;br /&gt;
    case Const.COLUMN_MATH:&lt;br /&gt;
      rc = p1.getMath() &amp;gt; p2.getMath() ? 1 : -1;&lt;br /&gt;
      break;&lt;br /&gt;
    case Const.COLUMN_CHEM:&lt;br /&gt;
      rc = p1.getChem() &amp;gt; p2.getChem() ? 1 : -1;&lt;br /&gt;
      break;&lt;br /&gt;
    case Const.COLUMN_AVE:&lt;br /&gt;
      rc = p1.getAve() &amp;gt; p2.getAve() ? 1 : -1;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    if (direction == DESCENDING)&lt;br /&gt;
      rc = -rc;&lt;br /&gt;
    return rc;&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>
		<author><name>Admin</name></author>	</entry>

	</feed>