Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "JRuby/SWTSnippets/Snippet2.rb"
< JRuby | SWTSnippets
(New page: ################################################################################ # Copyright (c) 2009 IBM Corporation and others. # All rights reserved. This program and the accompanying m...) |
|||
Line 1: | Line 1: | ||
+ | <pre> | ||
################################################################################ | ################################################################################ | ||
# Copyright (c) 2009 IBM Corporation and others. | # Copyright (c) 2009 IBM Corporation and others. | ||
Line 78: | Line 79: | ||
Snippet2.main | Snippet2.main | ||
+ | </pre> | ||
+ | |||
+ | Compare with the [http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet2.java Java version]. |
Latest revision as of 08:02, 28 July 2009
################################################################################ # Copyright (c) 2009 IBM Corporation and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # # Contributors: # IBM Corporation - initial API and implementation ################################################################################ require 'java' # # Table example snippet: sort a table by column # # For a list of SWT example snippets ported to JRuby, see # http://wiki.eclipse.org/JRuby/SWTSnippets # # @since 3.2 # class Snippet2 include_package 'org.eclipse.swt' include_package 'org.eclipse.swt.widgets' include_package 'org.eclipse.swt.layout' include_package 'java.text' include_package 'java.util' def Snippet2.main display = Display.new shell = Shell.new(display) shell.setLayout(FillLayout.new) table = Table.new(shell, SWT::BORDER) table.setHeaderVisible(true) column1 = TableColumn.new(table, SWT::NONE) column1.setText("Column 1") column2 = TableColumn.new(table, SWT::NONE) column2.setText("Column2 ") item = TableItem.new(table, SWT::NONE) item.setText(["a", "3"].to_java(:string)) item = TableItem.new(table, SWT::NONE) item.setText(["b", "2"].to_java(:string)) item = TableItem.new(table, SWT::NONE) item.setText(["c", "1"].to_java(:string)) column1.setWidth(100) column2.setWidth(100) doSort = Proc.new do |e| items = table.getItems collator = Collator.getInstance(Locale.getDefault) column = e.widget index = column == column1 ? 0 : 1 1.upto(items.length-1) do |i| value1 = items[i].getText(index) 0.upto(i-1) do |j| value2 = items[j].getText(index) if collator.compare(value1, value2) < 0 values = [items[i].getText(0), items[i].getText(1)] items[i].dispose item = TableItem.new(table, SWT::NONE, j) item.setText(values.to_java(:string)) items = table.getItems break end end end end column1.addListener(SWT::Selection) {|e| doSort.call(e) } column2.addListener(SWT::Selection) {|e| doSort.call(e) } table.setSortColumn(column1) table.setSortDirection(SWT::UP) shell.setSize(shell.computeSize(SWT::DEFAULT, SWT::DEFAULT).x, 300) shell.open display.sleep unless display.readAndDispatch until shell.isDisposed display.dispose end end Snippet2.main
Compare with the Java version.