/* * Created on 17-dic-2005 * * TODO To change the template for this generated file go to Window - * Preferences - Java - Code Style - Code Templates */ package org.herac.tuxguitar.gui.actions.composition; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.TypedEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.herac.tuxguitar.gui.TuxGuitar; import org.herac.tuxguitar.gui.actions.Action; import org.herac.tuxguitar.gui.actions.ActionLock; import org.herac.tuxguitar.gui.undo.undoables.custom.UndoableChangeInfo; import org.herac.tuxguitar.gui.util.DialogUtils; import org.herac.tuxguitar.gui.util.MessageDialog; import org.herac.tuxguitar.song.models.TGSong; import org.herac.tuxguitar.util.TGSynchronizer; /** * @author julian * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class ChangeInfoAction extends Action { private static final int GROUP_HEIGHT = SWT.DEFAULT; private static final int GROUP_WIDTH = 450; public static final String NAME = "action.composition.change-info"; public ChangeInfoAction() { super(NAME, AUTO_LOCK | AUTO_UNLOCK | AUTO_UPDATE | KEY_BINDING_AVAILABLE); } protected int execute(TypedEvent e) { showDialog(getEditor().getTablature().getShell()); return 0; } private GridData getButtonData() { GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); data.minimumWidth = 80; data.minimumHeight = 25; return data; } private GridLayout makeGroupLayout(int spacing) { GridLayout layout = new GridLayout(2, false); layout.marginTop = spacing; layout.marginBottom = spacing; layout.marginLeft = spacing; layout.marginRight = spacing; layout.verticalSpacing = spacing; layout.horizontalSpacing = spacing; return layout; } private GridData makeLabelData() { return new GridData(SWT.RIGHT, SWT.CENTER, false, true); } private GridData makeTextAreaData() { GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); data.minimumHeight = 100; return data; } private GridData makeTextData() { return new GridData(SWT.FILL, SWT.FILL, true, true); } protected void setProperties(String name, String artist, String album, String author, String date, String copyright, String writer, String transcriber, String comments) { // comienza el undoable UndoableChangeInfo undoable = UndoableChangeInfo.startUndo(); getSongManager().setProperties(name, artist, album, author, date, copyright, writer, transcriber, comments); TuxGuitar.instance().getFileHistory().setUnsavedFile(); TuxGuitar.instance().showTitle(); // termia el undoable addUndoableEdit(undoable.endUndo()); } public void showDialog(Shell shell) { TGSong song = getSongManager().getSong(); if (song != null) { final Shell dialog = DialogUtils.newDialog(shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); dialog.setLayout(new GridLayout()); dialog.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); dialog.setText(TuxGuitar.getProperty("composition.properties")); Group group = new Group(dialog, SWT.SHADOW_ETCHED_IN); group.setLayout(makeGroupLayout(5)); group.setLayoutData(new GridData(GROUP_WIDTH, GROUP_HEIGHT)); group.setText(TuxGuitar.getProperty("composition.properties")); // -------NAME------------------------------------ Label nameLabel = new Label(group, SWT.NULL); nameLabel.setLayoutData(makeLabelData()); nameLabel.setText(TuxGuitar.getProperty("composition.name") + ":"); final Text nameText = new Text(group, SWT.BORDER); nameText.setLayoutData(makeTextData()); nameText.setText(song.getName()); // -------ARTIST------------------------------------ Label artistLabel = new Label(group, SWT.NULL); artistLabel.setLayoutData(makeLabelData()); artistLabel.setText(TuxGuitar.getProperty("composition.artist") + ":"); final Text artistText = new Text(group, SWT.BORDER); artistText.setLayoutData(makeTextData()); artistText.setText(song.getArtist()); // -------ALBUM------------------------------------ Label albumLabel = new Label(group, SWT.NULL); albumLabel.setLayoutData(makeLabelData()); albumLabel.setText(TuxGuitar.getProperty("composition.album") + ":"); final Text albumText = new Text(group, SWT.BORDER); albumText.setLayoutData(makeTextData()); albumText.setText(song.getAlbum()); // -------AUTHOR------------------------------------ Label authorLabel = new Label(group, SWT.NULL); authorLabel.setLayoutData(makeLabelData()); authorLabel.setText(TuxGuitar.getProperty("composition.author") + ":"); final Text authorText = new Text(group, SWT.BORDER); authorText.setLayoutData(makeTextData()); authorText.setText(song.getAuthor()); // -------DATE------------------------------------ Label dateLabel = new Label(group, SWT.NULL); dateLabel.setLayoutData(makeLabelData()); dateLabel.setText(TuxGuitar.getProperty("composition.date") + ":"); final Text dateText = new Text(group, SWT.BORDER); dateText.setLayoutData(makeTextData()); dateText.setText(song.getDate()); // -------COPYRIGHT------------------------------------ Label copyrightLabel = new Label(group, SWT.NULL); copyrightLabel.setLayoutData(makeLabelData()); copyrightLabel.setText(TuxGuitar.getProperty("composition.copyright") + ":"); final Text copyrightText = new Text(group, SWT.BORDER); copyrightText.setLayoutData(makeTextData()); copyrightText.setText(song.getCopyright()); // -------WRITER------------------------------------- Label writerLabel = new Label(group, SWT.NULL); writerLabel.setLayoutData(makeLabelData()); writerLabel.setText(TuxGuitar.getProperty("composition.writer") + ":"); final Text writerText = new Text(group, SWT.BORDER); writerText.setLayoutData(makeTextData()); writerText.setText(song.getWriter()); // -------TRANSCRIBER------------------------------------ Label transcriberLabel = new Label(group, SWT.NULL); transcriberLabel.setLayoutData(makeLabelData()); transcriberLabel.setText(TuxGuitar.getProperty("composition.transcriber") + ":"); final Text transcriberText = new Text(group, SWT.BORDER); transcriberText.setLayoutData(makeTextData()); transcriberText.setText(song.getTranscriber()); // -------COMMENTS------------------------------------ Label commentsLabel = new Label(group, SWT.NULL); commentsLabel.setLayoutData(makeLabelData()); commentsLabel .setText(TuxGuitar.getProperty("composition.comments") + ":"); final Text commentsText = new Text(group, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL); commentsText.setLayoutData(makeTextAreaData()); commentsText.setText(song.getComments()); // ------------------BUTTONS-------------------------- Composite buttons = new Composite(dialog, SWT.NONE); buttons.setLayout(new GridLayout(2, false)); buttons.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, true, true)); final Button buttonOK = new Button(buttons, SWT.PUSH); buttonOK.setText(TuxGuitar.getProperty("ok")); buttonOK.setLayoutData(getButtonData()); buttonOK.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent arg0) { final String name = nameText.getText(); final String artist = artistText.getText(); final String album = albumText.getText(); final String author = authorText.getText(); final String date = dateText.getText(); final String copyright = copyrightText.getText(); final String writer = writerText.getText(); final String transcriber = transcriberText.getText(); final String comments = commentsText.getText(); dialog.dispose(); try { TGSynchronizer.instance().runLater(new TGSynchronizer.TGRunnable() { public void run() throws Throwable { ActionLock.lock(); TuxGuitar.instance().loadCursor(SWT.CURSOR_WAIT); setProperties(name, artist, album, author, date, copyright, writer, transcriber, comments); TuxGuitar.instance().updateCache(true); TuxGuitar.instance().loadCursor(SWT.CURSOR_ARROW); ActionLock.unlock(); } }); } catch (Throwable throwable) { MessageDialog.errorMessage(throwable); } } }); Button buttonCancel = new Button(buttons, SWT.PUSH); buttonCancel.setText(TuxGuitar.getProperty("cancel")); buttonCancel.setLayoutData(getButtonData()); buttonCancel.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent arg0) { dialog.dispose(); } }); dialog.setDefaultButton(buttonOK); DialogUtils.openDialog(dialog, DialogUtils.OPEN_STYLE_CENTER | DialogUtils.OPEN_STYLE_PACK | DialogUtils.OPEN_STYLE_WAIT); } } }