1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
/* :name=Show Same Segments :description=Display a list of segments where source and target identical content
*
* Display a list of segments where source and target identical content
*
* @author Kos Ivantsov
* @date 2013-11-29
* @version 0.1
*/
import groovy.swing.SwingBuilder
import java.awt.Component
import javax.swing.JButton
import javax.swing.JTable
import javax.swing.table.*
import javax.swing.event.*
import java.awt.event.*
import java.awt.BorderLayout as BL
def prop = project.projectProperties
if (!prop) {
final def title = 'Show same segments'
final def msg = 'Please try again after you open a project.'
showMessageDialog null, msg, title, INFORMATION_MESSAGE
return
}
data = []
files = project.projectFiles;
segment_count=0
for (i in 0 ..< files.size())
{
fi = files[i];
console.println(fi.filePath);
for (j in 0 ..< fi.entries.size()) {
ste = fi.entries[j];
source = ste.getSrcText();
target = project.getTranslationInfo(ste) ? project.getTranslationInfo(ste).translation : null;
if ( source == target) {
data.add([ seg: ste.entryNum(), source: source, target: target ])
console.println(ste.entryNum() + "\t" + source + "\t" + target);
segment_count++;
}
}
}
swing = new SwingBuilder()
frame = swing.frame(title:'Same Segments', pack: true, show: true, preferredSize: [720, 500]) {
scrollPane {
table() {
tableModel(list:data) {
propertyColumn(editable: true, header:'Segment', propertyName:'seg', minWidth: 80, maxWidth: 80, preferredWidth: 80,
cellEditor: new TableCellEditor() {
public void cancelCellEditing() {}
public boolean stopCellEditing() { return false; }
public Object getCellEditorValue() { return value; }
public boolean isCellEditable(EventObject anEvent) { return true; }
public boolean shouldSelectCell(EventObject anEvent) { return true; }
public void addCellEditorListener(CellEditorListener l) {}
public void removeCellEditorListener(CellEditorListener l) {}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
println("value: " + value);
org.omegat.core.Core.getEditor().gotoEntry(value);
}
},
cellRenderer: new TableCellRenderer()
{
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column)
{
def btn = new JButton()
btn.setText(value.toString())
return btn
}
}
)
propertyColumn(editable: false, header:'Source',propertyName:'source', preferredWidth: 200)
propertyColumn(editable: false, header:'Target',propertyName:'target', preferredWidth: 200)
}
}
}
panel(constraints: BL.SOUTH){
button('Quit', actionPerformed:{
frame.visible = false
})
}
}
frame.pack()
frame.show()
|