blob: 845e5bc96af544739c587af3069a55b41f8c406e [file] [log] [blame]
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.ui.popup.util;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.LogicalPosition;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.util.UserDataHolder;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
/**
* Created with IntelliJ IDEA.
* User: zajac
* Date: 5/9/12
* Time: 5:34 AM
* To change this template use File | Settings | File Templates.
*/
public interface DetailView extends UserDataHolder {
Editor getEditor();
void navigateInPreviewEditor(PreviewEditorState editorState);
JPanel getPropertiesPanel();
void setPropertiesPanel(@Nullable JPanel panel);
void clearEditor();
PreviewEditorState getEditorState();
ItemWrapper getCurrentItem();
boolean hasEditorOnly();
void setCurrentItem(@Nullable ItemWrapper item);
class PreviewEditorState {
public static PreviewEditorState EMPTY = new PreviewEditorState(null, null, null);
public static PreviewEditorState create(VirtualFile file, int line) {
return new PreviewEditorState(file, line < 0 ? null : new LogicalPosition(line, 0), null);
}
public static PreviewEditorState create(VirtualFile file, int line, TextAttributes attributes) {
return new PreviewEditorState(file, line < 0 ? null : new LogicalPosition(line, 0), attributes);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PreviewEditorState state = (PreviewEditorState)o;
if (myAttributes != null ? !myAttributes.equals(state.myAttributes) : state.myAttributes != null) return false;
if (myFile != null ? !myFile.equals(state.myFile) : state.myFile != null) return false;
if (myNavigate != null ? !myNavigate.equals(state.myNavigate) : state.myNavigate != null) return false;
return true;
}
@Override
public int hashCode() {
int result = myFile != null ? myFile.hashCode() : 0;
result = 31 * result + (myNavigate != null ? myNavigate.hashCode() : 0);
result = 31 * result + (myAttributes != null ? myAttributes.hashCode() : 0);
return result;
}
public VirtualFile getFile() {
return myFile;
}
@Nullable
public LogicalPosition getNavigate() {
return myNavigate;
}
public TextAttributes getAttributes() {
return myAttributes;
}
private final VirtualFile myFile;
private final LogicalPosition myNavigate;
private final TextAttributes myAttributes;
public PreviewEditorState(VirtualFile file, @Nullable LogicalPosition navigate, TextAttributes attributes) {
myFile = file;
myNavigate = navigate;
myAttributes = attributes;
}
}
}